与Perl的Net :: Telnet连接时,如何修复“未知终端类型”?

与Perl的Net :: Telnet连接时,如何修复“未知终端类型”?,第1张

概述我在使用Perl的 Net::Telnet模块连接到SUSE linux机器时遇到了问题. 代码如下所示: my $t = new Net::Telnet (Timeout => 20);$t->open($server);$t->input_log("telnet.log");$t->login($user, $pass);my @lines=$t->cmd($command);pri 我在使用Perl的 Net::Telnet模块连接到SUSE linux机器时遇到了问题.
代码如下所示:

my $t = new Net::Telnet (Timeout => 20);$t->open($server);$t->input_log("telnet.log");$t->login($user,$pass);my @lines=$t->cmd($command);print @lines;

日志文件如下所示:
    欢迎使用SUSE linux Enterprise Server 10 SP1(x86_64) – 内核2.6.16.46-0.12-default(5).

vm-slES10u5 login: <myuser>Password: Last login: Thu Feb 25 10:41:07 EST 2010 from <mymachine> on pts/5tset: unkNown terminal type networkTerminal type?

有什么建议?

解决方法 如果使用option_log函数来记录收到并返回的telnet选项.您将看到默认情况下Perl不会将终端类型发送到服务器.由于某些原因,服务器会将终端类型默认为“网络”.

正确的方法是在perl端设置终端类型.

my $termtype = 'vt100'; my $telopt_ttype_ok = '';my $t = new Net::Telnet (Timeout => 5);$t->option_callback(\&opt_callback);$t->option_accept(Do=>Net::Telnet->TELOPT_TTYPE);$t->suboption_callback(\&subopt_callback);$t->open($server);$t->input_log("runRemoteCommand_telnet.log");$t->login($user,$pass);$t->cmd($command);exit 0;sub opt_callback {   my ($obj,$option,$is_remote,$is_enabled,$was_enabled,$buf_position) = @_;  if ($option == Net::Telnet->TELOPT_TTYPE and $is_enabled and !$is_remote) {    $telopt_ttype_ok = 1;    }   1;}sub subopt_callback { my ($obj,$parameters) = @_;  my ($ors_old,$otm_old); if ($option == Net::Telnet->TELOPT_TTYPE)  {  $ors_old = $obj->output_record_separator('');  $otm_old = $obj->telnetmode (0);  $obj->print("\xff\xfa",pack("CC",0),$termtype,"\xff\xf0");  $obj->output_record_separator($ors_old);  $obj->telnetmode ($otm_old); } 1;}

Refer to this

总结

以上是内存溢出为你收集整理的与Perl的Net :: Telnet连接时,如何修复未知终端类型”?全部内容,希望文章能够帮你解决与Perl的Net :: Telnet连接时,如何修复“未知终端类型”?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1253133.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存