我正在编写一个脚本,该脚本将从本地服务器scp一个tar文件到远程主机。由于脚本通过先决过程生成文件,因此名称是动态生成的。我的脚本需要使用文件名,并将其传递给scp进行传输。
#!/usr/bin/expect -f
spawn scp test.$(date +%y%m%d_%H%M).tar user@IP-ADDRESS:/destination/folder
set pass "password"
expect "password: "
send -- "$pass\r"
expect eof
我尝试将文件名设置为变量,但仍然看到相同的错误:
无法读取“(日期+%y%m%d_%H%M)”:无此类变量执行“ spawn scp test。$(date +%y%m%d_%H%M).tar user @ IP-ADDRESS:/ destination / folder“
决定走另一条路,因为团队能够为此二进制文件和类似文件提供新的Artifactory回购。但是,根据这里提供的建议,我能够发现一些以前用来解决问题的发现:
我也有一个带$符号的密码,这也引起了很多问题。
#!/bin/bash
TEST=$(date +%y%m%d_%H%M)
/usr/bin/expect <<eof
set password {pas\$word}
spawn scp "$TEST" user@IP-ADDRESS:/destination/folder
expect "*password:"
send "$pasword\r"
expect eof