2013-05-08 11 views
11

Ho un file batch per lo spostamento del file dal mio PC locale al server tramite SFTP. Ho installato PuTTY nel mio sistema e segue il codice del file batch.File batch per automazione trasferimento file PuTTY/PSFTP

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 

Il codice precedente funziona perfettamente quando si digita nel prompt dei comandi. Ma quando faccio doppio clic sul file .bat ed eseguo, non è in esecuzione e richiede l'inserimento di nome utente e password. Il mio obiettivo era quello di automatizzare il tutto e ho bisogno di eseguirlo semplicemente facendo clic sul file .bat. Ma non sono in grado di raggiungerlo. Qualsiasi idea o frammento mi aiuterà.

risposta

18

è necessario memorizzare lo script psftp (linee da open a bye) in un file separato e passare che a psftp utilizzando -b interruttore:

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

Dove script.txt viene considerato in C:\Program Files (x86)\PuTTY. In alternativa, fornire un percorso completo (non dimenticare di racchiudere il percorso tra virgolette, in particolare se contiene spazi. È consigliabile farlo anche con il comando cd).

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


EDIT: Per nome utente + password: Come non è possibile utilizzare psftp i comandi in un file batch, per lo stesso motivo, non è possibile specificare il nome utente e la password come psftp comandi . Questi sono ingressi al comando open. Mentre è possibile specificare il nome utente con il comando open (open <user>@<IP>), non è possibile specificare la password in questo modo. Questo può essere fatto solo su una riga di comando psftp. Allora è probabilmente più pulito di fare tutto sulla riga di comando:

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

e rimuovere il open, <user> e <PW> linee dal script.txt.

Riferimento:
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


Quello che state facendo atm è che si esegue psftp senza alcun parametro o comandi. Una volta uscito (come digitando bye), il file batch continua a provare a eseguire il comando open (e altri), che shell di Windows ovviamente non capisce.

+0

Ciao Martin, Grazie mille per una rapida risposta. Ho modificato come hai detto. Il mio schermo ora si blocca così. C: \ Programmi (x86) \ PuTTY> "cd C: \ Programmi (x86) \ PuTTY" Il nome del file, il nome della directory o la sintassi dell'etichetta del volume non sono corretti C: \ Programmi (x86) \ PuTTY> psftp - b script.txt psftp: nessun nome host specificato; usa "open host.name" per connetterti come: – suresh

+0

1) È 'cd" C: \ ... \ PuTTY "' 2) Vedi modifica nella mia risposta –

+0

La sua esecuzione è perfetta, grazie. – suresh