2013-05-08 7 views
11

Ich habe eine Batch-Datei zum Verschieben von Dateien von meinem lokalen PC zum Server über SFTP. Ich habe PuTTY in meinem System installiert und der Batch-Dateicode folgt.Batch-Datei für PuTTY/PSFTP Dateiübertragung Automatisierung

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 perfekt, wenn ich es in Eingabeaufforderung eintippt. Aber wenn ich auf die Datei .bat doppelklicke und sie starte, läuft sie nicht und fragt nach dem Benutzernamen und dem Passwort. Mein Ziel war es, das Ganze zu automatisieren, und ich muss es ausführen, indem ich einfach auf die Datei .bat klicke. Aber ich bin nicht in der Lage, es zu erreichen. Irgendwelche Ideen oder Schnipsel werden mir helfen.

Antwort

18

Sie müssen die psftp Skript speichern (Linien open-bye) in eine separate Datei und übergeben Sie das zu psftp mit -b Schalter:

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

Wo script.txt angenommen wird, in C:\Program Files (x86)\PuTTY sein. Alternativ können Sie einen vollständigen Pfad angeben (Vergessen Sie nicht, den Pfad in doppelte Anführungszeichen zu setzen, insbesondere wenn er Leerzeichen enthält. Dies sollten Sie auch mit Ihrem cd-Befehl tun).

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


EDIT: Für Benutzername + Passwort: Wie Sie nicht psftp Befehle in einer Batch-Datei, aus dem gleichen Grund verwenden können, können Sie nicht den Benutzernamen und das Kennwort 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 auf diese Weise nicht angeben. Dies kann nur über eine psftp Befehlszeile erfolgen. Dann ist es wahrscheinlich sauberer zu tun alle auf der Kommandozeile:

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

und entfernen Sie die open, <user> und <PW> Linien von 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 atm tun, ist, dass Sie psftp ohne Parameter oder Befehle ausführen. Sobald Sie es beenden (z. B. indem Sie bye eingeben), versucht die Stapeldatei weiterhin, den Befehl open auszuführen (und andere), was die Windows-Shell offensichtlich nicht versteht.

+0

Hallo Martin, Danke eine Tonne für schnelle Antwort. Ich habe geändert, wie Sie sagten. Mein Bildschirm hängt jetzt so. C: \ Programme (x86) \ PuTTY> "CD C: \ Programme (x86) \ PuTTY" Der Dateiname, der Verzeichnisname oder die Laufwerkslabelsyntax sind falsch C: \ Programme (x86) \ PuTTY> psftp - b script.txt psftp: Kein Hostname angegeben; benutze "open host.name" um dich anzumelden als: – suresh

+0

1) Es ist 'cd' C: \ ... \ PuTTY" '2) Siehe Bearbeiten in meiner Antwort –

+0

Es läuft perfekt, danke. – suresh