捕获期望ssh输出到变量

时间:2014-11-18 19:41:45

标签: bash ssh expect capture

他是bash脚本的新手,并想知道如何将ssh命令的输出捕获到bash变量中?我环顾四周,似乎无法正确行事。我已尝试过放置$expect_out(buffer),但当echo表示变量不存在时

我知道响应应该只有一行,如果我想将其保存到变量response然后echo,我该怎么做呢?

1 个答案:

答案 0 :(得分:4)

一般概念可以如下所示。

  1. spawn ssh会话
  2. 正确登录
  3. 使用send
  4. 发送每个命令
  5. 使用expect
  6. 等待所需的输出

    示例:

    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`