【问题标题】:How can I fix my expect script for scp download?如何修复我的期望脚本以进行 scp 下载?
【发布时间】:2019-10-03 20:42:10
【问题描述】:

我正在尝试使用 expect 绕过我正在使用的远程服务器的密码身份验证过程,因此我可以批量下载一系列文件,每个文件都存储在不同的文件夹中。

使用expect的原因是远程文件存储在单独的文件夹中,我正在访问的服务器不允许我ssh key访问。

目前我正在努力使用期望下载单个文件,不要介意一次下载多个文件。下面是我的简单脚本:

#!/bin/bash 

#connect to the server using scp
expect <<EOF
spawn scp username@server:file.txt ./
expect “*word:*“
send “password\r”
EOF

我希望将 file.txt 下载到我运行脚本的目录中。但是,当它运行时,我从服务器获取文本输出,要求输入密码,然后暂停 4-5 秒它退出到命令提示符。

非常感谢任何帮助!

【问题讨论】:

    标签: macos shell terminal expect scp


    【解决方案1】:
    1. 我在您的代码中看到“花式”引号。 Expect 不会将它们理解为引号。确保您的编辑器不使用“智能引号”。
    2. 发送密码后,您必须等待下载完成才能退出脚本:

      #!/bin/bash 
      
      #connect to the server using scp
      expect <<EOF
          set timeout -1
          spawn scp username@server:file.txt ./
          expect "*word:*"
          send "password\r"
          expect eof
      EOF
      

    【讨论】:

      猜你喜欢
      • 2014-01-16
      • 2019-03-09
      • 2011-06-24
      • 2018-07-09
      • 1970-01-01
      • 2016-10-01
      • 2014-11-05
      • 2011-12-09
      • 1970-01-01
      相关资源
      最近更新 更多