【问题标题】:Using 'expect' to automatically send in password [duplicate]使用“期望”自动发送密码[重复]
【发布时间】:2010-11-05 21:50:36
【问题描述】:

我正在尝试将文件从远程服务器复制到本地。这是我运行它的脚本,通过使用“期望”自动发送密码

scp user@host:/folder/myFile ./
expect "Password: "
send "myPassword"

当我运行这个时,它仍然提示“密码”,这是怎么回事?

【问题讨论】:

    标签: linux bash shell scp expect


    【解决方案1】:

    这个期望脚本完成了这项工作(感谢'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
    }
    

    【讨论】:

    • 我在 stackoverflow 上找到的第一个工作脚本!谢谢你的分享!我总是偶然发现我不应该以这种方式使用期望的建议......实际上我正在开发一个程序,我应该在其 sshd 服务器不支持公钥身份验证 Orz 的路由器上进行测试。使用 expect 是我唯一的救赎。
    【解决方案2】:

    虽然我同意 Sam 和 nik,但您的问题的答案是您没有“按 Enter”:

    send "mypassword\r"
    

    【讨论】:

      【解决方案3】:

      请不要留下这样的脚本,否则可能会被其他人捡起并在其他地方使用……试试public key authentication,它很容易设置。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2015-11-28
          • 2016-01-22
          • 2021-07-12
          • 2013-11-19
          • 2020-03-08
          • 1970-01-01
          • 1970-01-01
          • 2016-01-08
          • 1970-01-01
          相关资源
          最近更新 更多