2014-02-25 49 views
0

我試圖將文件從遠程Windows服務器複製到Unix服務器。我成功地能夠使用命令提示符從Windows Server中複製文件,但是當我從腳本運行這些命令時,它無法按預期工作。從shell腳本運行命令的問題

命令中使用:

sftp [email protected]

lcd local_dir

cd remote dir

get file_name

exit

當我通過腳本運行這些命令時,腳本在連接到遠程服務器後停止。

有誰可以告訴我如何解決這個問題。

+0

你使事情變得更加複雜,你有如果服務器提供這種用途,則使用'scp'而不是'sftp'來實現這種目的,因爲您可以執行單個命令而不必進行交互,所以在腳本中使用它更容易。如果你堅持使用'sftp',儘量不要以交互方式使用它,而是使用'wget'或'curl'等一些包裝器。 – arkascha

+0

感謝您的評論。早些時候嘗試過scp,它並沒有如此感人。如果可能,你能否詳細說明你的答案 – Naresh

+0

「它不工作」是什麼意思?當然scp確實有效。我每天都用它。這與'scp [email protected]/remote_dir/filename local_dir /' – arkascha

回答

1

的命令lcdexitsftp命令,所以你cannont只需將它們寫入一行腳本行,但必須將它們重新定向爲sftp小號標準輸入:

# all lines till "EOF" will be redirected to sftp 
sftp [email protected] <<- EOF 
lcd local_dir 
cd remote dir 
get file_name 
exit 
EOF 

# here you are in your shell script again, eg: 
SFTPRES=$?