Scp kann nicht mit einem Bash-Alias ​​verwendet werden

15

Dieser Code funktioniert nicht:

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

Der Alias ​​lautet:

alias nameOfBashAlias='ssh [email protected]'

Wie löse ich dieses Problem?

Bearbeiten

Ist etwas Ähnliches wie der folgende Code möglich, z. B. das Ausführen mehrerer Instanzen von bash?

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

Ich habe den obigen Code nicht zum Laufen gebracht.

Léo Léopold Hertz 준영
quelle

Antworten:

22

Ich würde nicht empfehlen, einen Bash-Alias ​​für das zu verwenden, was Sie erreichen möchten. Sie können einfach alle Informationen in die Konfigurationsdatei von SSH eingeben und fertig. Lesen Sie die Manpage, ssh_configwenn Sie neugierig sind, woher diese stammen. Sie können einige nette Dinge mit machenssh_config

Die Datei befindet sich hier ~/.ssh/config

Verwenden Sie Ihren bevorzugten Editor, erstellen Sie die Datei und passen Sie diese dann an Ihre Situation an.

Host nameOfBashAlias
HostName 11.11.11.11
User myUsername
Port 22

Sie können jetzt den folgenden Befehl eingeben:

$ ssh nameOfBashAlias 

Ich wette, Sie wussten nicht, wie integriert das alles ist. Nachdem Sie dieses Setup vorgenommen haben, funktionieren auch die folgenden Befehle

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

Nicht mehr daran denken, dass scp "-P" für port und ssh "-p" verwendet. Dieser "Alias" funktioniert auch in OS X-GUI-Apps wie Transmit.

OpenSSH bezieht Konfigurationsdaten aus den folgenden Quellen in der folgenden Reihenfolge:

  1. Befehlszeilenoptionen
  2. Konfigurationsdatei des Benutzers ~/.ssh/config
  3. systemweite Konfigurationsdatei /etc/ssh_config
Von Landfried
quelle
Ja, ich stimme Ihrem voll und ganz zu. Ich benutze diese Methode heutzutage auch, da sie viel besser mit anderen Systemen und Tools synchronisiert.
Léo Léopold Hertz 준영
funktioniert unter
MacOSX nicht
@JabranSaeed Bitte öffne eine neue Frage oder hier ein Community-Wiki als Antwort auf deinen Fall mit Informationen zu deinem Betriebssystem, deiner Version, deiner Shell usw. Bitte gib auch den Link zu deiner Herausforderung hier im Kommentar an. Dieser Thread ist relevant für GNU scp.
Léo Léopold Hertz 준영
FWIW dies scheint auf OS X zu funktionieren (zumindest auf meinem, El Capitain 10.11.6)
Alex W
5

scpBash läuft nicht. Sie müssten dies ausführen:

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

Wenn Sie nur den Alias ​​haben und der obige Code für Sie nicht möglich ist, können Sie ihn folgendermaßen ausführen:

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

Auf diese Weise rufen Sie sshden Dateiinhalt tatsächlich auf und leiten ihn an eine Datei auf der Festplatte weiter. Dies kann für Uploads auch anders geschrieben werden.


quelle
Der erste Befehl sollte scp ~ / Desktop / favicon.ico [email protected] sein: / public_html / mySite / templates / blog /
Léo Léopold Hertz 준영
2

Aliase werden ersetzt, wenn sie das erste Wort eines Bash-Befehls sind. Ihr Alias ​​erscheint am Anfang des dritten Wortes.

Ich würde dafür eine Shell-Variable verwenden.

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

Übrigens denke ich, dass Ihr ursprünglicher Alias ​​kein ssh enthalten sollte. Und das letzte Codebeispiel enthält ein>, das auch falsch aussieht.

Andrej Panjkov
quelle
@mataap: Vielen Dank für Ihre Antwort!
Léo Léopold Hertz 준영
0

Nein, Ihre Beispiele werden nicht funktionieren, da BASHAliase nicht so funktionieren. Ich schlage vor, Sie verwenden eine Variable. Fügen Sie dies in Ihr ~/.profileoder ~/.bashrc[was auch immer Sie verwenden] ein:
site="[email protected]"
Dann funktioniert dies in Ihrem Terminal:
scp favicon.ico $site:/dir/


Oder Sie könnten ein Skript schreiben, wie ich es für meinen iPod mache. In meinem BashRC habe ich ipod=192.168.2.60, dann in meinem Skript bekomme ich source ~/.bashrcmeine Variablen im Skript, dann im Skript: scp $1 $ipod
Der Nachteil ist, dass ich das Skript bearbeiten muss, um rekursiv zu arbeiten. und ich kann nur 1 datei machen. aber wenn ich beides brauche benutze ich normalerweise scpdirekt vom terminal aus!
~ Matt

Matt
quelle