2013-05-08 19 views
11

Mam plik wsadowy do przenoszenia pliku z mojego lokalnego komputera na serwer przez SFTP. Mam system PuTTY zainstalowany w moim systemie, a kod pliku wsadowego następuje.Plik wsadowy do automatyzacji transferu plików 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 

Powyższy kod doskonale działa, gdy wpisuję go w wierszu polecenia. Ale kiedy dwukrotnie kliknę plik .bat i uruchomię go, to nie działa i prosi o podanie nazwy użytkownika i hasła. Moim celem było zautomatyzowanie wszystkiego i muszę go uruchomić, po prostu klikając plik .bat. Ale nie jestem w stanie tego osiągnąć. Pomogą mi w tym wszelkie pomysły i fragmenty.

Odpowiedz

18

trzeba przechowywać skrypt psftp (linie od open do bye) w osobnym pliku i przekazać, że do psftp użyciu -b przełącznik:

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

Gdzie zakłada script.txt być w C:\Program Files (x86)\PuTTY. Alternatywnie podaj pełną ścieżkę (nie zapomnij o zamknięciu ścieżki do podwójnych cudzysłowów, szczególnie jeśli zawiera spacje.) Powinieneś to zrobić również za pomocą komendy cd.

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


EDIT: Dla nazwy użytkownika + hasło: Ponieważ nie można używać psftp poleceń w pliku wsadowym, z tego samego powodu, nie można określić nazwę użytkownika i hasło jako psftp poleceń . Są to dane wejściowe polecenia open. Chociaż można określić nazwę użytkownika za pomocą komendy open (open <user>@<IP>), nie można w ten sposób określić hasła. Można to zrobić tylko na linii poleceń psftp. Wtedy to prawdopodobnie czystsze zrobić wszystko w linii poleceń:

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

i wyjąć open, <user> i <PW> linie z script.txt.

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


Co robisz atm jest, aby uruchomić psftp bez parametru lub poleceń. Po wyjściu z niego (np. Wpisując bye), plik wsadowy kontynuuje próbę uruchomienia polecenia open (i innych), którego powłoki Windows oczywiście nie rozumie.

+0

Cześć Martin, Dziękuję za szybką odpowiedź. Zmodyfikowałem, jak powiedziałeś. Mój ekran jest teraz zawieszony w ten sposób. C: \ Program Files (x86) \ PuTTY> "cd C: \ Program Files (x86) \ PuTTY" Nazwa pliku, nazwa katalogu lub składnia etykiety woluminu jest niepoprawna C: \ Program Files (x86) \ PuTTY> psftp - b script.txt psftp: nie podano nazwy hosta; użyj "open host.name", aby połączyć login jako: – suresh

+0

1) To jest 'cd" C: \ ... \ PuTTY "' 2) Zobacz edytuj w mojej odpowiedzi –

+0

Działa doskonale, dziękuję. – suresh

Powiązane problemy