通过ssh命令自动从控制器获取诊断文件

时间:2018-05-18 16:40:52

标签: bash ssh expect

我想自动从响应ssh命令的控制器获取诊断文件,例如

ssh diag@controller tarred > diags.tgz

不幸的是,我必须输入密码才能完成上述命令。 我考虑过什么来解决这个问题:

  1. 使用ssh键:不可能,因为我无法登录到控制器,它只需要命令而不提供shell
  2. 使用ssh-pass软件包:我没有该机器的管理员权限,无法安装软件包
  3. 使用“expect”:在某种程度上有效,但生成的文件已损坏。
  4. 这是我用过的“expect”脚本:

    #!/usr/bin/expect -f
    log_user 0
    set timeout 300
    spawn ssh diag@controller tarred
    expect "?assword:"
    send "unrealpassword\r"
    expect \r\n
    log_user 1
    expect eof
    

    该脚本确保只有所需的输出与“log_user”命令一起存储,直到遇到eof。

    我已经将此脚本传输到文件并且该文件已损坏,即它太短(因为超时?)或太长(?)。 关于这里出了什么问题的任何想法。?

0 个答案:

没有答案