如何修复我希望下载的scp脚本?

时间:2019-05-16 14:20:58

标签: macos shell terminal expect scp

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

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

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

#!/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秒前暂停它会退出到命令提示符。

任何帮助,我们将不胜感激!

1 个答案:

答案 0 :(得分:0)

  1. 我在您的代码中看到“花式”引号。期望不会理解那些作为报价。确保您的编辑器不使用“智能引号”。
  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