无法在bash Script Expect中发送长命令

时间:2016-05-11 03:15:53

标签: php exec expect telnet

我在使用我的期望脚本发送长命令时遇到了麻烦。我正在使用telnet访问路由器:

#! /usr/bin/expect -f
#
#

spawn telnet 192.168.0.5

expect {
  "login:"
    {
        send "admin\r"
        expect "Password:"
        send "admin\r"

        expect ">"
        send "enable\r"
        expect "Password:"
        send "\r"

        # My Command
        expect "#"
        send "terminal length 0\r"
        expect "#"
        send "show running-config | include ip nat pool-group\r"
    }
}

expect "#"
send "exit\r"

我在php中使用exec来运行上面的脚本

<?php
exec(mybinfile , $returnvalue);
print_r($returnvalue);

当我检查输出时,看起来已经发送了错误的命令。但它仍然有效。为什么输出它?

结果如下:

[14] => R1#terminal length 0
[15] => R1#show running-config | include ip nat pool-gro$ng-config | include ip nat pool-grou          $ng-config | include ip nat pool-group

我尝试减少命令中的字符数,如下例所示,这很好:

show running-config | include ip nat pool-gro

如果这是我在print_r中可以看到的输出,我会遇到问题吗?

1 个答案:

答案 0 :(得分:0)

除了发出terminal length 0命令外,您还可以发出terminal width 511命令以防止换行。这为我们解决了类似的问题。

来自the documentation

  

要设置在控制台会话期间显示信息的宽度,请在全局配置模式下使用终端宽度命令。要禁用,请使用此命令的形式。

     

终端宽度

     

没有终端宽度

另请参阅ServerFault上的this question