View Full Version : Sftp mehrere Dateien in Unterverzeichnis verschieben
Hallo Leute,
mittels expect-Script wird eine sftp-Verbindung zu einem Server hergestellt.
Mit „mget files*“ werden die Dateien von diesem Server heruntergeladen.
Kann ich mit einem Befehl alle heruntergeladenen files* auf dem Server in ein Unterverzeichnis verschieben?
Vielen Dank für eure Antworten.
sftp hat regulär keine Implementation des "mv" Commands, das Wildcards unterstützt.
Mittels ren[ame] kann man einzelne Dateien verschieben.
Da musst du dir nach dem mget eine Liste auf dem Client erstellen und ein Script generieren, dass dann jede Datei einzeln verschiebt.
Es gibt aber meistens noch die Möglichkeit mit "!HostCommand..." eine Befehl an die Hostshell zu übergeben um diesen dann dort auszuführen. Je nach Host (Linux/Windows) gibts dann ggf. unterschiedliche Befehle.
Windows: !move
Linux: !mv
hallo Fuerchau,
kann ich diese Liste, um die Dateien einzeln zu verarbeiten, innerhalb des expect-scripts erstellen und mittels Schleife verarbeiten?
In der Theorie ja:
https://www.thegeekstuff.com/2011/01/expect-expressions-loops-conditions/
Allerdings finde ich nichts näheres, die Liste der Dateinamen zu bekommen.
Allerdings, hast du das !-Kommando mal ausprobiert?
Damit wird ja der nachfolgende Befehl auf dem Ziel ausgeführt.
Andreas_Prouza
10-11-23, 15:09
Hierfür wäre es via SSH am einfachsten:
ssh host "cd wo/auch/immer; mv *.txt verzeichnis"
Lässt sich ssh denn auch via expect-Script scripten?
Andreas_Prouza
10-11-23, 15:46
Wenn man mit SSH-Keys arbeitet (und das sollte man immer tun) kann man das in ein Script einbauen.
So mache ich das schon öfter.
Mit dem SSH kann man sehr viel machen (scp, rsync, remote-cmds, usw.).
* Es ist sehr einfach
* Lässt sich sehr gut in Skripte einbinden
* Außerdem ist alles immer Verschlüsselt