我想從遠程服務器上將文件複製到本地。這裏是我的腳本來運行它,通過使用「預期」在密碼使用'expect'自動發送密碼
scp [email protected]:/folder/myFile ./
expect "Password: "
send "myPassword"
當我運行這個automaticlally發送時,它仍然會提示「密碼」,有什麼不好?
我想從遠程服務器上將文件複製到本地。這裏是我的腳本來運行它,通過使用「預期」在密碼使用'expect'自動發送密碼
scp [email protected]:/folder/myFile ./
expect "Password: "
send "myPassword"
當我運行這個automaticlally發送時,它仍然會提示「密碼」,有什麼不好?
從你正在嘗試做的事情聽起來,你可能會更好地使用ssh與公鑰和私鑰。你可以谷歌的ssh-keygen教程開始。
請不要留下這樣的腳本,將其他人拿起並在其他地方使用....嘗試public key authentication,這是非常容易設置。
雖然我與山姆和NIK,回答你的問題同意的是,你沒有「敲回車」:
send "mypassword\r"
這expect腳本做這項工作(感謝'zedwood')
#!/usr/bin/expect -f
set filename [lindex $argv 0]
set timeout -1
spawn scp $filename [email protected]:/home/myusername/
set pass "mypassword"
expect {
password: {send "$pass\r" ; exp_continue}
eof exit
}
我在stackoverflow上找到的第一個工作腳本!感謝你的分享!我總是偶然發現我不應該以這種方式使用期望的建議......其實我正在開發一個程序,我應該在一臺路由器上測試它的sshd服務器不支持公鑰認證Orz。使用期望是我唯一的救贖。 – 2016-09-12 08:44:42