Hallo zusammen
Ich habe einen Linux-Server für die Kommunikation nach extern, welcher in der DMZ steht.
Nun möchte ich über SSH auf diesem Server einen SFTP-Befehl ausführen, welcher Daten von einem externen Server abholt.
Wenn ich das in ein Shell-Script einbaue, ist das einfach. Aber ich möchte den Befehl in einem Programm dynamisch zusammenbauen und ausführen.
Ich möchte also mit SFTP eine Verbindung zum externen Server aufbauen, in ein Verzeichnis wechseln und dann mit mget *.xml alle xml-Dateien herunterladen.
Im Shell-Script funktioniert das so:
/bin/sftp -q -i "${PKEY}" "${USER}"@"${SERVER}" << cmd | tee -a "${LOGFILE}"
cd verzeichnis
mget -p *.xml
cmd
Das Gleiche möchte ich jetzt über SSH ausführen.
Hab es mal wie folgt probiert:
KOMMANDO='/bin/sftp -q -i "/home/user/.ssh/user.key" "user"@"server.ch" "cd verzeichnis" "mget -p *.xml"'
Das Kommando wird mit folgendem Popen ausgeführt.
SSH = Popen( "ssh -i {key} {user}@{host} {cmd}".format(key=KEY, user=USER, host=HOST, cmd=KOMMANDO), shell=True, stdout=PIPE, stderr=STDOUT )
Da kommt dann eine Fehlermeldung:
usage: sftp [-1246aCfpqrv] [-B buffer_size] [-b
Somit stimmt die Syntax nicht.
Weiss jemand, wie ich da mehrere Befehle ausführen kann?
Wenn ich einfach einen Befehl ohne Leerschlag ausführe, funktionierts (z.B. pwd), aber bereits ls -l stellt ein Problem dar.
Besten Dank für eure Unterstützung.
Gruss Rolf