簡體   English   中英

bash期望在ssh連接期間如何將響應輸出保存到變量

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

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