免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1528 | 回复: 0
打印 上一主题 下一主题

Net::SSH::Expect返回信息带提示符的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-19 17:37 |只看该作者 |倒序浏览
调用Net::SSH::Expect->read_line()方法会把操作系统的提示符取回来,有没有办法不取系统提示符的?
代码和执行返回如下,有无方法去掉提示符的?
尝试设置提示操作系统提示符为空好像也不行,请各位大侠帮忙看看,谢谢!

Start SSH ...

Start SSH Login in
ping active and SSH login ok
CMD: uptime
[10.212.48.10] RET:   5:28pm  up 142 day(s),  1:40,  2 users,  load average: 0.11, 0.12, 0.12
CMD: vmstat 1 2
[10.212.48.10] RET: FSM9000E20-3-/export/home/daladmin>  kthr      memory            page            disk          faults      cpu  r b w   swap  free  re  mf pi po fr de sr m0 m1 m2 m3   in   sy   cs us sy id  0 0 0 119875912 61349256 69 2285 2 4 4 0 0 0  0  0  2 1997 10662 1694 0  1 99





  1. use strict;
  2. #use Getopt::Long;
  3. use Net::SSH::Expect;
  4. use Net::Telnet;

  5. my $debug=1;

  6.                 print "\nStart SSH ...\n";
  7.                 my ($net_telnet,$host_ip,$host_usr,$host_pwd);
  8.                 $host_ip="xx.xx.xx.xx";
  9.                 $host_usr="xxx";
  10.                 $host_pwd="xxx";
  11.                
  12.                 $net_telnet =  new Net::SSH::Expect (
  13.                 host => $host_ip,
  14.                 user => $host_usr,
  15.                 password=> $host_pwd,
  16.                 raw_pty => 1
  17.                 );
  18.                
  19.                         print "\nStart SSH Login in\n";
  20.                         my $login_output;
  21. my $net_prompt   = '';
  22. #$net_telnet->run_ssh() or die "SSH process couldn't start: $!";
  23.                         $login_output = $net_telnet->login();
  24.         #               print "\$login_output:$login_output\n";

  25.                         if ($login_output !~ /Last login/)
  26.                         {
  27.                                 print "ping active and SSH login Failed\n";
  28.                                 if (defined($net_telnet)) { $net_telnet->close();}
  29.                                 exit(1);
  30.                         }
  31.                         else
  32.                         {
  33. #                               $net_telnet->cmd("csh") ;
  34.                     #            $net_telnet->prompt("/$net_prompt\$/");
  35. #                                $net_telnet->cmd("set prompt = '$net_prompt'");

  36.                                 print "ping active and SSH login ok\n";
  37.                         }
  38.                         
  39.                         my @ls=exec_cmd(\$net_telnet,"uptime");
  40.                         @ls=exec_cmd(\$net_telnet,"vmstat 1 2");
  41.                         #print @ls;
  42.                         if(defined($net_telnet)) { $net_telnet->close();}
  43.                         
  44. sub traceDebug
  45. {
  46.         my $str = shift;
  47.         print "[$host_ip] ".$str if ($debug > 0);
  48. }
  49.                         
  50. sub exec_cmd
  51. {
  52.         my ($ptelnet,$cmd) = @_;
  53.         my @lines;
  54.         my $line;
  55.         my $net_timeout=10;
  56.         print "CMD: $cmd\n";
  57. $ptelnet->send("$cmd");
  58.    #     $ptelnet->cmd(
  59.    #                String  => $cmd,
  60.    #                Timeout => $net_timeout);
  61.         while(defined($line=$ptelnet->read_line()))
  62.         {
  63.                 push @lines,$line;
  64.         }
  65.         traceDebug "RET: @lines\n";
  66.         return @lines;
  67. }      
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP