bash,期待密码没有传入

时间:2015-10-23 05:40:18

标签: bash passwords expect scp spawn

我正在尝试使用scp,我需要与之通信的盒子没有密钥。 我尝试使用此代码及其在线搜索的各种变体,由于某些原因它无法输入。 如果你能帮助我,那就太好了。提前致谢。 顺便说一下,我正在通过mac上的测试执行bash脚本。

#!/bin/bash

#$1- source file
#$2- destination
#$3- password

/usr/bin/expect << EOF
spawn scp -rp $1  $2
set pass $3
expect -re "password:"
send "password\r" 
expect "\r"
send "\r\n"
EOF

结果是;

spawn scp -rp file1 user@x.com:/path/file2
me@whoknows.com's password: 
return value was : 0

1 个答案:

答案 0 :(得分:1)

您必须等待end of file (eof)命令的scp

#!/bin/bash

#$1- source file
#$2- destination
#$3- password

/usr/bin/expect << EOF
spawn scp -rp $1  $2
set pass $3; # Instead, you can also directly use the '$3' for password
puts "pwd = \$pass"
expect -re "password:"
send "\$pass\r" 
expect eof
EOF

输出

dinesh@dinesh-VirtualBox:~/stackoverflow$ ./vmaxer srcfile dinesh@xxx.xxx.xx.xxx:/home/dinesh welcome!2E
spawn scp -rp srcfile dsivaji@xxx.xxx.xx.xxx:/home/dinesh
pwd = welcome!2E
dinesh@xxx.xxx.xx.xxx's password: 
srcfile                                                        100%  281     0.3KB/s   00:00    
dinesh@dinesh-VirtualBox:~/stackoverflow$ 

注意:如果您的文件太大并且花费的时间超过Expect的默认超时(10秒),则应增加{{1}价值。

可以实现,

timeout