簡體   English   中英

兩個命令或命令管道命令-Spawn Expect

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM