使用'expect'自动发送密码
问题描述:
我想从远程服务器上将文件复制到本地。这里是我的脚本来运行它,通过使用“预期”在密码使用'expect'自动发送密码
scp [email protected]:/folder/myFile ./
expect "Password: "
send "myPassword"
当我运行这个automaticlally发送时,它仍然会提示“密码”,有什么不好?
答
从你正在尝试做的事情听起来,你可能会更好地使用ssh与公钥和私钥。你可以谷歌的ssh-keygen教程开始。
答
虽然我与山姆和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