2013-01-04 54 views
1

我試圖自動將我的Linux服務器上的某些文件上傳到支持FTP的Windows服務器。我成功地使用SFTP手動執行,然後發出命令。但是,從cron調用時,我的腳本不停地輸入密碼。爲什麼在發送密碼後使用Expect自動化SFTP掛起?

下面是我在嘗試使用代碼:

#!/usr/bin/expect 
#!/bin/sh 
clear 
spawn sftp [email protected] 
expect "password" 
send "world" 
expect eof 

因爲它的立場,它每次都要求輸入密碼停止。爲什麼send "world"沒有完成密碼對話框?

UPDATE:

#!/usr/bin/expect 
#!/bin/sh 
clear 
spawn sftp [email protected] 
expect "[email protected]'s password:" 
send "world" 
expect eof 

現在我得到以下錯誤:

xml_reports.sh: line 5: spawn: command not found 
couldn't read file "[email protected]'s password:": no such file or directory 
xml_reports.sh: line 7: send: command not found 
couldn't read file "eof": no such file or directory 
+0

是用大寫字母密碼請求?如果是這樣,那麼你需要使用期望「[Pp]密碼」 – Petesh

+1

@Petesh,真的你想發送一個回車('\ r') - 模擬用戶擊中回車。 –

+0

@glennjackman刪除了違規評論。 – Petesh

回答

0

你需要,當你運行它使用的參數。閱讀this文章。它解釋瞭如何正確執行此操作。

0

發生了什麼是Expect仍在等待模式到達(直到超時),可能是因爲「密碼」不在sftp提示符中,而可能是「密碼」或其他內容。

+0

謝謝。我沒有意識到預測論證必須是確切的。我接受了你的建議並更新了我的代碼,但是我收到了一些錯誤。我在原始問題中包含了UPDATE部分,其中包含更改和錯誤輸出 – sisko

相關問題