我目前有以下代码用于自动 ssh 脚本:
#!/usr/bin/expect -f
set pw "mypass"
spawn ssh [email protected]
expect "Password:"
send "$pw\r"
expect "Verification code:"
send "/usr/local/bin/authtool --totp --base32 $(sed -n '/^secret=/s///p' ~/.Auth.sc)\r"
本质上,我有一个两步登录程序。首先是密码(有效),其次是身份验证(无效)。
每次我到达 sed 部分时,它都会返回:
can't read "(sed -n '/^secret=/s///p' ~/.Auth.sc)": no such variable
while executing
我不知道该怎么做,但高度怀疑与反斜杠和转义有关。我在正确的轨道上吗?
在
Tcl
中,[...]
等价于$(...)
,因此您应该将代码编写为:尝试这个 ,
基本上在
expect
脚本中,在这部分代码中:将其
$(sed -n '/^secret=/s///p' ~/.Auth.sc)
视为预期变量,实际上并非如此。所以尝试这样做,即转义
$
(
)
或者尝试使用反引号。