我正在尝试使用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秒前暂停它会退出到命令提示符。
任何帮助,我们将不胜感激!
答案 0 :(得分:0)
发送密码后,必须等待下载完成才能退出脚本:
#!/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