perl telnet - 如何处理多页输出

时间:2013-03-03 22:24:09

标签: perl telnet multipage

我正在编写一个脚本,用于通过保存输出“show run”来保存开关配置,因为固件在处理tftp时遇到问题。 “show run”的输出除以帖子More: <space>, Quit: q, One line: <return>

# sh run
no spanning-tree
interface port-channel 1
shutdown
exit
interface port-channel 2
shutdown
exit
interface port-channel 3
shutdown
exit
interface port-channel 4
shutdown
exit
interface port-channel 5
shutdown
exit
interface port-channel 6
shutdown
exit
interface port-channel 7
shutdown
exit
More: <space>,  Quit: q, One line: <return>

我的部分脚本如下:

foreach (@linksys_sps){
  print ("Connecting to ",$_,"\n");
  my $telnet = new Net::Telnet ( Timeout=>10,Errmode=>'return');
  $telnet->open($_);
  if ($telnet->errmsg){
    print "Can't connect to " . $_ . " Error: " . $telnet->errmsg . "\n";
  } else {
    $telnet->waitfor('/User Name:$/i');
    $telnet->print('admin');
    $telnet->waitfor('/Password:$/i');
    $telnet->print('password');
    my @lines = $telnet->cmd("sh run");
    print @lines;
    sleep(5);
    $telnet->print('exit');
  }
}

和他的工作成果:

# sh run
no spanning-tree
interface port-channel 1
shutdown
exit
interface port-channel 2
shutdown
exit
interface port-channel 3
shutdown
exit
interface port-channel 4
shutdown
exit
interface port-channel 5
shutdown
exit
interface port-channel 6
shutdown
exit
interface port-channel 7
shutdown
exit
More: <space>,  Quit: q, One line: <return>

如何解决?

2 个答案:

答案 0 :(得分:1)

您的交换机上是否有选项将页面长度设置为零(0)?如果是这样,你必须在执行'sh run'命令之前添加它。

答案 1 :(得分:0)

在alcatel 6224和同样的Dell powerconnect 3548上,它可以工作:

my @lines = $telnet->cmd("terminal datadump");
@lines = $telnet->cmd("show run");