it-swarm.com.de

Batchdatei für die PuTTY/PSFTP-Dateiübertragungsautomatisierung

Ich habe eine Batch-Datei zum Verschieben von Dateien von meinem lokalen PC auf den Server über SFTP. Ich habe PuTTY in meinem System installiert und der Batch-Dateicode folgt.

cd C:\Program Files (x86)\PuTTY
psftp
open <IP>
<user>
<PW>
cd /home/irisuser/iris/integration/dls_dlsblr_dlschnn_in_msg/in
lcd d:\
put log.sh
bye

Der obige Code funktioniert einwandfrei, wenn ich ihn in die Eingabeaufforderung eingebe. Wenn ich jedoch auf die .bat-Datei doppelklicke und sie ausführe, wird sie nicht ausgeführt und fragt nach Benutzername und Kennwort. Mein Ziel war es, das Ganze zu automatisieren, und ich muss es ausführen, indem ich einfach auf die .bat-Datei klicke. Aber ich kann es nicht erreichen. Alle Ideen oder Ausschnitte werden mir helfen.

13
suresh

Sie müssen das psftp-Skript (Zeilen von open bis bye) in einer separaten Datei speichern und dieses mit -b switch an psftp übergeben:

cd "C:\Program Files (x86)\PuTTY"
psftp -b script.txt

Dabei wird davon ausgegangen, dass script.txt in C:\Program Files (x86)\PuTTY ist. Geben Sie alternativ einen vollständigen Pfad an (Vergessen Sie nicht, den Pfad in doppelte Anführungszeichen einzuschließen, insbesondere wenn er Leerzeichen enthält. Sie sollten dies besser mit Ihrem Befehl cd tun).

Referenz:
https://the.earth.li/~sgtatham/PuTTY/latest/htmldoc/Chapter6.html#psftp-option-b


BEARBEITEN: Für Benutzername + Kennwort: Da Sie keine psftp-Befehle in einer Batchdatei verwenden können, können Sie aus demselben Grund den Benutzernamen und das Kennwort nicht als psftp-Befehle angeben. Dies sind Eingaben für den Befehl open. Während Sie den Benutzernamen mit dem Befehl open (open <user>@<IP>) angeben können, können Sie das Kennwort nicht auf diese Weise angeben. Dies kann nur in einer psftp-Befehlszeile erfolgen. Dann ist es wahrscheinlich sauberer, alles auf der Kommandozeile zu erledigen: 

cd "C:\Program Files (x86)\PuTTY"
psftp -b script.txt <user>@<IP> -pw <PW>

Und entfernen Sie die Zeilen open, <user> und <PW> aus Ihrem script.txt.

Referenz:
https://the.earth.li/~sgtatham/PuTTY/latest/htmldoc/Chapter6.html#psftp-starting
https://the.earth.li/~sgtatham/PuTTY/latest/htmldoc/Chapter3.html#using-cmdline-pw


Was Sie tun, ist, dass Sie psftp ohne Parameter oder Befehle ausführen. Nach dem Beenden (z. B. durch Eingabe von bye) versucht die Batchdatei weiterhin, den Befehl open (und andere) auszuführen, was Windows Shell offensichtlich nicht versteht.


Wenn Sie wirklich alles in einer Datei (der Batch-Datei) aufbewahren möchten, können Sie Befehle in die psftp-Standardeingabe schreiben, beispielsweise:

(
    echo cd ...
    echo lcd ...
    echo put log.sh
) | psftp -b script.txt <user>@<IP> -pw <PW>
23
Martin Prikryl
set DSKTOPDIR="D:\test"
set IPADDRESS="23.23.3.23"

>%DSKTOPDIR%\script.ftp ECHO cd %PAY_REP%
>>%DSKTOPDIR%\script.ftp ECHO mget *.report
>>%DSKTOPDIR%\script.ftp ECHO bye

:: run PSFTP Commands
psftp <domain>@%IPADDRESS% -b %DSKTOPDIR%\script.ftp

Stellen Sie die Werte mithilfe der Set-Befehle vor den obigen Zeilen ein.

Ich glaube das hilft dir.

Richten Sie das psfpt-Setup für den folgenden Link ein https://www.ssh.com/ssh/PuTTY/putty-manuals/0.68/Chapter6.html

0
Rajkumar S