2009-06-25 94 views
3

我想从远程服务器上将文件复制到本地。这里是我的脚本来运行它,通过使用“预期”在密码使用'expect'自动发送密码

scp [email protected]:/folder/myFile ./ 
expect "Password: " 
send "myPassword" 

当我运行这个automaticlally发送时,它仍然会提示“密码”,有什么不好?

回答

1

从你正在尝试做的事情听起来,你可能会更好地使用ssh与公钥和私钥。你可以谷歌的ssh-keygen教程开始。

4

请不要留下这样的脚本,将其他人拿起并在其他地方使用....尝试public key authentication,这是非常容易设置。

10

虽然我与山姆和NIK,回答你的问题同意的是,你没有“敲回车”:

send "mypassword\r" 
5

这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 
} 
+0

我在stackoverflow上找到的第一个工作脚本!感谢你的分享!我总是偶然发现我不应该以这种方式使用期望的建议......其实我正在开发一个程序,我应该在一台路由器上测试它的sshd服务器不支持公钥认证Orz。使用期望是我唯一的救赎。 – 2016-09-12 08:44:42

相关问题