[英]Two commands or command pipe command - Spawn Expect
我正在嘗試將期望腳本執行到bash腳本中,但是當我嘗試不使用“ | tee -a xxx.log
”(其中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”變量,但不起作用:(
cssh $USR@192.168.228.20 \| tee -a /home/xxx.log
有誰知道另一種保存從期望開始的ssh會話的方法? 或如何在同一個spawn命令中發送這兩個命令。
如果要像管道一樣放置外殼元字符,則必須生成外殼來處理它們。 另外使用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
您可以通過以下方式捕獲期望的會話輸出:
comlog="ssh $USR@192.168.228.20"
expect -c"
spawn \"$comlog\"
expect \"Password:\"
send \"$PASS\r\" #Already Obteined
interact
" >/home/xxx.log
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.