Perl windows telnet会话结束

时间:2012-11-21 06:32:46

标签: perl telnet

我编写了Perl脚本,使用telnet自动完成工作,连接到Windows并启动服务器。

#!/usr/bin/perl -w

use Net::Telnet;

$telnet = new Net::Telnet ( Timeout=>30, Errmode=>'die');
$telnet->open('ip');
$telnet->waitfor('/login: $/i');
$telnet->print('admin');
$telnet->waitfor('/password: $/i');
$telnet->print('password');
$telnet->waitfor('/\C:\\\\Documents and Settings\\\\Administrator/');
$telnet->print('start server');
$telnet->close();

当程序结束时,服务器再次返回到未运行状态。 在Unix中,这很有效。

1 个答案:

答案 0 :(得分:-1)

如果您使用的是Microsoft Telnet Server,请注意编码和控制字符存在问题。

来自documentation of Net::Telnet

  

连接到远程MS-Windows计算机

     

默认情况下,MS-Windows不附带TELNET服务器。然而第三   派对TELNET服务器可用。不幸的是很多这些   服务器错误地声称是TELNET服务器。这尤其如此   随附的所谓“Microsoft Telnet Server”   一些较新版本的MS-Windows。

     

当TELNET服务器首次接受连接时,它必须使用ASCII   控制字符回车和换行以开始新行   (见RFC854)。像“Microsoft Telnet Server”这样的服务器没有   这样做,不是TELNET服务器。这些服务器发送ANSI终端   转义序列以定位到后续行上的列和   写出与每个字符相邻的字符时的偶数位置   其他。更糟糕的是,当发送输出时,这些服务器重新发送先前发送   命令输出错误地尝试显示整个终端   屏幕。

     

将Net :: Telnet连接到其中一个虚假的TELNET服务器会使您的   解析命令输出的工作非常困难。更换一个更好   假TELNET服务器与真正的TELNET服务器。更好的TELNET   MS-Windows服务器允许您通过转动来避免ANSI转义   他们中的一些人称之为控制台模式。