171 Aufrufe
Gefragt in Linux von

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

Deine Antwort

Dein angezeigter Name (optional):
Datenschutz: Deine Email-Adresse benutzen wir ausschließlich, um dir Benachrichtigungen zu schicken. Es gilt unsere Datenschutzerklärung.
Anti-Spam-Captcha:
Bitte logge dich ein oder melde dich neu an, um das Anti-Spam-Captcha zu vermeiden.
...