簡體   English   中英

來自Expect腳本的輸出重復

[英]Duplicated output from Expect Script

我有一個在主機A上運行的SSH期望腳本A,到主機B的遠程服務器,在主機B上運行bash腳本B,然后將腳本B的輸出附加回主機A上的文件。運行此期望腳本后,附加的內容是正是我想要的,但是重復了。 例如,如果所需的輸出是“ abc”,我將得到“ abcabc”。 復制的運行時間戳與原始時間戳相同。

請參見下面的期望腳本:

#!/usr/bin/expect

 set ip ip

 set user "user"

 set password "password"

 set first " "

 spawn ssh $user@$ip /path/to/script/b/scriptb.sh

 expect { -re "(^ABC)|(^password)"

      set variable $expect_out(buffer)

      set first [cut -c1-3 $variable]

 }

 if {"$first" == "ABC"} {

      send "123"

      send "$password\r";

 } else {

      send "$password\r"

 }

 expect -re "(?s)-{30}\r\n(.*?)-{30}"

 puts $expect_out(0,string)

我的假設是Expect_out(buffer)的輸出是2倍,第二個Expect -re將輸出匹配兩次。 我嘗試未成功使用unset Expect_out(buffer)。 我還玩了第二個Expect -re的定位,並把帶有if語句的語句無效。 如果修復很簡單,我很抱歉,但是在論壇上花費了很多時間來尋找它。 任何想法表示贊賞。

問候,

艾倫

修復重復問題; 請參閱下面的更新代碼:

期望{-re“(?s)-{30} \\ r \\ n(。*?)-{30}”

{puts $expect_out(0,string) }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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