我编写了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中,这很有效。
答案 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转义 他们中的一些人称之为控制台模式。