[英]bash expect how to save respond output to a variable during the ssh connection
我沖進一台機器。 我做一個發送命令。 我想將所有這些輸出捕獲到變量中。
我試過了
output=$(send "rpm -i mypkg.rpm\r")
但它不起作用。 任何想法?
錯誤信息
")": no such variablean't read "(send ""rpm -i mypkg.rpm
while executing
"output=$(send "rpm -i mypkg.rpm\r")"
如user000001所述 ,在=
后面有一個空格字符,在bash中不起作用,因為bash會將其解釋為帶有參數的命令。
但是,在ssh會話中捕獲命令輸出有什么意義呢? 您很可能希望從客戶端計算機上獲得它,因此代碼如下:
output=$(ssh myhost 'rpm -i mypkg.rpm')
如果您以這種方式執行它們,有些程序會嚇壞了,這是因為沒有終端。 您可以通過在ssh中使用-t
標志來強制偽偽分配。
"output=$(send "rpm -i mypkg.rpm\\r")"
-這里的問題是您的報價。 您可以通過混合使用不同類型的引號來解決該問題。 例如:
"output=$(send 'rpm -i mypkg.rpm\r')"
在Expect
中創建變量的語法例如: set output "some content"
要使用最后一條命令設置變量output
,可以執行以下操作:
send "rpm -i mypkg.rpm\r" // send the command
expect '#' // wait for the prompt
set output $expect_out(buffer); // store the output in 'output' variable
我認為Bash
語法在這里不起作用( output=$( command )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.