Impossible d'utiliser scp avec un alias bash

15

Ce code ne fonctionne pas:

scp ~/Desktop/favicon.ico nameOfBashAlias:/public_html/mySite/templates/blog/

L'alias est:

alias nameOfBashAlias='ssh [email protected]'

Comment puis-je résoudre ce problème?

Éditer

Est-ce que quelque chose de similaire au code suivant est possible, comme exécuter de nombreuses instances de bash?

scp ~/Desktop/favicon.ico (nameOfBashAlias)>:/public_html/mySite/templates/blog/

Je n'ai pas réussi à faire fonctionner le code ci-dessus.

Léo Léopold Hertz 준영
la source

Réponses:

22

Je ne recommanderais pas d'utiliser un alias Bash pour ce que vous essayez d'accomplir. Vous pouvez simplement entrer toutes les informations dans le fichier de configuration de SSH et en finir avec. Lisez la page de manuel pour savoir ssh_configsi vous voulez en savoir plus. Vous pouvez faire de belles choses avecssh_config

Le fichier se trouve ici ~/.ssh/config

Utilisez votre éditeur préféré et créez le fichier, puis ajustez-le à votre situation.

Host nameOfBashAlias
HostName 11.11.11.11
User myUsername
Port 22

Vous êtes maintenant configuré pour émettre la commande suivante:

$ ssh nameOfBashAlias 

Je parie que vous ne saviez pas à quel point tout cela est intégré. Maintenant que vous avez cette configuration, les commandes suivantes fonctionnent également

$ scp /some/file nameOfBashAlias:/path/to/storage/location/ 

Plus besoin de se rappeler que scp utilise "-P" pour le port et ssh utilise "-p". De plus, cet "alias" fonctionne également dans les applications OS X gui comme Transmit.

OpenSSH obtient les données de configuration des sources suivantes dans l'ordre suivant:

  1. options de ligne de commande
  2. fichier de configuration de l'utilisateur ~/.ssh/config
  3. fichier de configuration à l'échelle du système /etc/ssh_config
Von Landfried
la source
Oui, je suis entièrement d'accord avec vous. Aujourd'hui, j'utilise également cette méthode, car elle se synchronise beaucoup mieux avec d'autres systèmes et d'autres outils.
Léo Léopold Hertz 준영
ne fonctionne pas pour moi sur MacOSX
Jabran Saeed
@JabranSaeed S'il vous plaît, ouvrez une nouvelle question ou ici un wiki communautaire comme réponse à votre cas avec une information sur votre OS, version, shell etc. S'il vous plaît, fournissez également un lien sur votre défi ici en commentaire. Ce fil est pertinent pour GNU scp.
Léo Léopold Hertz
FWIW cela semble fonctionner sur OS X (au moins, il l'a fait sur le mien, El Capitain 10.11.6)
Alex W
5

scpne fonctionne pas bash. Vous devez exécuter ceci:

 scp ~/Desktop/favicon.ico 11.11.11.111:/public_html/mySite/templates/blog/

Si tout ce que vous avez est l'alias et que le code ci-dessus n'est pas possible pour vous, envisagez de l'exécuter comme ceci:

nameOfBashAlias cat /public_html/mySite/templates/blog/ > ~/Desktop/favicon.ico

De cette façon, vous invoquez sshet dirigez le contenu du fichier vers un fichier sur le disque. Cela peut être écrit dans l'autre sens pour les téléchargements.


la source
La première commande doit être scp ~ / Desktop / favicon.ico [email protected]: / public_html / mySite / templates / blog /
Léo Léopold Hertz 준영
2

Les alias sont substitués lorsqu'ils sont le premier mot d'une commande bash. Votre alias apparaît au début du troisième mot.

J'utiliserais une variable shell pour cela.

blah='[email protected]'
scp ~/Desktop/favicon.ico ${blah}:/public_html/mySite/templates/blog/

Btw, je pense que votre alias d'origine ne devrait pas contenir de ssh. Et le dernier exemple de code contient un> qui semble incorrect aussi.

Andrej Panjkov
la source
@mataap: Merci beaucoup pour votre réponse!
Léo Léopold Hertz 준영
0

Non, vos exemples ne fonctionneront pas, car ce n'est pas ainsi que fonctionnent les BASHalias. Je vous suggère d'utiliser une variable. Mettez ceci dans votre ~/.profileou ~/.bashrc[celui que vous utilisez]:
site="[email protected]"
puis dans votre terminal, cela fonctionnera:
scp favicon.ico $site:/dir/


Ou vous pouvez écrire un script comme je le fais pour mon iPod. dans mon bashrc, j'ai ipod=192.168.2.60, puis dans mon script, je reçois source ~/.bashrcdonc mes variables dans le script, puis dans le script: scp $1 $ipod
l'inconvénient est que je devrais éditer le script pour le faire récursif. et je ne peux faire qu'un seul fichier. mais quand j'ai besoin de l'un de ceux que j'utilise habituellement scpdirectement depuis le terminal!
~ Matt

Mat
la source