我正在尝试使用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
答案 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