他是bash脚本的新手,并想知道如何将ssh
命令的输出捕获到bash变量中?我环顾四周,似乎无法正确行事。我已尝试过放置$expect_out(buffer)
,但当echo
表示变量不存在时
我知道响应应该只有一行,如果我想将其保存到变量response
然后echo
,我该怎么做呢?
答案 0 :(得分:4)
一般概念可以如下所示。
spawn
ssh会话send
expect
示例:
spawn ssh $user@$domain
expect "password" { send "$pwd\r"}
expect "#"; # This '#' is nothing but the terminal prompt
send "$cmd\r"
expect "#"
puts $expect_out(buffer); #Will print the output of the 'cmd' output now.
执行命令后要等待的单词可能因系统而异。它可以是#
或$
或>
或:
;所以,确保你给出了正确的。或者,您可以为提示提供通用模式
set prompt "#|>|:|\\\$"; # We escaped the `$` symbol with backslash to match literal '$'
在发送命令后使用expect
时,可以将其用作
expect -re $prompt; #Using regex to match the pattern`