Net::Telnet模块的使用

看到的dump log总是显示undetermine terminal type。

## Module import.
use Net::Telnet qw(TELNET_IAC TELNET_SB TELNET_SE TELOPT_TTYPE); 

## Global variables.
my $Term; 

## Main program.
{    
    my $host = "your_destination_host_here";    
    my $user = "your_username_here";    
    my $passwd = "your_password_here";    
    my $prompt = '/bash\$ $/';  
    
    # your regexp for shell prompt here    
    my $t;     
    $t = new Net::Telnet (Prompt => $prompt);     
    
    ## Set up callbacks to negotiate terminal type.    
    $t->option_callback(sub {});    
    $t->suboption_callback(\&subopt_callback);    
    $t->option_accept(Do => TELOPT_TTYPE);     
    
    ## Login and print value of TERM.    
    $Term = "dumb";    
    $t->open($host);    
    $t->login($user, $passwd);    
    print $t->cmd('hostname');    
    print "TERM=", $t->cmd('echo $TERM');    
    $t->close;     
    exit;
} 

# end main program 
sub subopt_callback {    
    my ($t, $option, $parameters) = @_;    
    my $telcmd;     
    if ($option == TELOPT_TTYPE) {        
        $telcmd = pack("C4 A* C2", TELNET_IAC, TELNET_SB, TELOPT_TTYPE, 0,                       $Term, TELNET_IAC, TELNET_SE);        
        $t->put(String => $telcmd,                Telnetmode => 0);    
    }     
1;
} # end sub subopt_callback

用其中的这个部分的代码,就可以自动判断终端类型,实现想要的东西

转载于:https://my.oschina.net/OliverTwist/blog/214811

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值