Dies ist eine sehr grundlegende Frage, die ich noch nicht richtig verstanden habe. Googeln brachte mich leider nicht weiter.
Mein Ziel ist es, mit sftp eine Verbindung zu einem Server herzustellen, eine Datei hochzuladen und dann die Verbindung zu trennen.
Ich habe das folgende Skript:
UpdateJar.sh
#!/bin/bash
sftp -oPort=23 [email protected]:/home/kalenpw/TestWorld/plugins
#Change directory on server
#cd /home/kalenpw/TestWorld/plugins
#Upload file
put /home/kalenpw/.m2/repository/com/Khalidor/TestPlugin/0.0.1-SNAPSHOT/TestPlugin-0.0.1-SNAPSHOT.jar
exit
Das Problem ist, dass dieses Skript eine SFTP-Verbindung herstellt und dann nichts unternimmt. Nachdem ich exit in connection manuell eingegeben habe, wird versucht, den Befehl put auszuführen. Da die SFTP-Sitzung jedoch geschlossen wurde, wird nur put: command not found angezeigt.
Wie kann ich dafür sorgen, dass das richtig funktioniert?
Vielen Dank
Antworten:
Sie können Ihr Skript so ändern, dass Befehle in einem Here-Dokument übergeben werden, z.
Die
<<
Markierung gefolgt von dem Namen (EOF
) weist das Skript an, die folgenden Zeilen zu übergeben, bis der Name am Anfang der Zeile gefunden wird (für sich allein).quelle
Möglicherweise bevorzugen Sie die Verwendung
scp
vonsftp
.scp
Verhält sich ähnlich wie der normalecp
Befehl, aber die Dateien können remote sein:Dadurch wird die Datei auf Ihrem lokalen Computer in ein Verzeichnis auf dem Remotecomputer kopiert, ohne dass die alte FTP-Befehlsschnittstelle verwendet werden muss.
Die
ssh
,scp
undsftp
Dienstleistungen sind in der Regel , wenn eine von ihnen sind; Das gleiche Daemon-Programm stellt alle gleichzeitig bereit. Grundsätzlich kann der Administrator des Servers eine der beiden Optionen deaktivieren. In der Praxis ist dies jedoch recht selten.quelle
scp
Sie können auch die
-b
Option verwendensftp
, um eine Datei anzugeben, die Befehle für enthältsftp
.Sie können beispielsweise alle Ihre Befehle in eine Datei einfügen
sftp_commands.txt
:und laufe
sftp
als:Oder Sie können die Befehle auch über STDIN übergeben, wenn Sie keine Datei verwenden möchten.
Von
man sftp
:quelle
Eine andere Möglichkeit wäre die Verwendung von Curl :
quelle