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