使用'expect'自动发送密码

Sao*_*obi 3 linux bash shell scp expect

我正在尝试将文件从远程服务器复制到本地.这是我运行它的脚本,使用'expect'自动发送密码

scp user@host:/folder/myFile ./
expect "Password: "
send "myPassword"
Run Code Online (Sandbox Code Playgroud)

当我运行它时,它仍然提示"密码",有什么问题?

gle*_*man 10

虽然我同意Sam和nik的意见,但问题的答案是你没有"输入":

send "mypassword\r"
Run Code Online (Sandbox Code Playgroud)


Ede*_*den 9

这个期望脚本完成工作(感谢'zedwood')

#!/usr/bin/expect -f
set filename [lindex $argv 0]
set timeout -1
spawn scp $filename myusername@192.168.1.123:/home/myusername/
set pass "mypassword"
expect {
        password: {send "$pass\r" ; exp_continue}
        eof exit
}
Run Code Online (Sandbox Code Playgroud)


nik*_*nik 5

甚至请不要留下这样的脚本,这些脚本可能会被其他人捡到并在其他地方使用……尝试使用公钥身份验证,它很容易设置。


Sam*_*Sam -5

从您尝试做的事情来看,听起来您最好使用带有公钥和私钥的 ssh 。您可以通过 google 搜索 ssh-keygen 教程来开始使用。