我正在尝试将一个expect脚本执行到bash脚本中,但是当我尝试执行没有“| tee -a xxx.log
”的shell时(其中xxx.log是一个文件,而不是我想写的来记录ssh会话) )。
此代码可以正常工作:
comlog="ssh $USR@192.168.228.20"
expect -c"
spawn \"$comlog\"
expect \"Password:\"
send \"$PASS\r\"
interact
"
但是当我尝试添加“tee -a”命令来保存ssh会话时,问题是
invalid command name "ssh"
while executing
这是我获取错误消息的完整命令
comlog="ssh $USR@192.168.228.20 | tee -a /home/xxx.log"
expect -c"
spawn \"$comlog\"
expect \"Password:\"
send \"$PASS\r\" #Already Obteined
interact
"
我试图以这种方式更改“comlog”var但不起作用:(
cssh $USR@192.168.228.20 \| tee -a /home/xxx.log
有没有人知道另一种方法来保存从期望开始的ssh会话?或者我如何在同一个spawn命令中发送这两个命令。
答案 0 :(得分:0)
如果要将shell元字符放置为管道,则必须生成一个shell来处理它们。使用here-doc也可以帮助引用
comlog="ssh $USR@192.168.228.20 | tee -a /home/xxx.log"
expect <<"END_EXPECT"
spawn sh -c "$comlog"
... rest of expect script
END_EXPECT
答案 1 :(得分:0)
您可以通过以下方式捕获期望会话输出:
comlog="ssh $USR@192.168.228.20"
expect -c"
spawn \"$comlog\"
expect \"Password:\"
send \"$PASS\r\" #Already Obteined
interact
" >/home/xxx.log