Perl windows telnet会话结束

Perl windows telnet会话结束,perl,telnet,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->wa

我已经编写了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中,这很好。

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

连接到远程MS Windows计算机

默认情况下,MS Windows不附带TELNET服务器。然而第三 第三方TELNET服务器可用。不幸的是,其中许多 服务器错误地声称是TELNET服务器。尤其如此 安装的所谓“Microsoft Telnet服务器”的 一些较新版本的MS Windows

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

将Net::Telnet连接到这些错误的Telnet服务器之一会使您的 解析命令输出的工作非常困难。最好换个新的 错误的TELNET服务器与真实的TELNET服务器。更好的电信网 MS Windows服务器允许您通过旋转来避免ANSI转义 关闭一些他们称之为控制台模式的东西


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

连接到远程MS Windows计算机

默认情况下,MS Windows不附带TELNET服务器。然而第三 第三方TELNET服务器可用。不幸的是,其中许多 服务器错误地声称是TELNET服务器。尤其如此 安装的所谓“Microsoft Telnet服务器”的 一些较新版本的MS Windows

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

将Net::Telnet连接到这些错误的Telnet服务器之一会使您的 解析命令输出的工作非常困难。最好换个新的 错误的TELNET服务器与真实的TELNET服务器。更好的电信网 MS Windows服务器允许您通过旋转来避免ANSI转义 关闭一些他们称之为控制台模式的东西


您所说的“在Unix中,这工作正常”是什么意思?您的意思是当脚本在Unix计算机上执行或连接到Unix计算机时?是的。。。当我在unix中运行相同的代码时,服务器会在脚本结束时继续运行。您所说的“在unix中,这工作正常”是什么意思?您的意思是当脚本在Unix计算机上执行或连接到Unix计算机时?是的。。。当我在unix中运行相同的代码时,服务器会在脚本结束时继续运行。所以没有其他方法来启动远程机器的服务器??windows?在$telnet->close()之后;服务器返回到旧状态(未运行)。我希望服务器运行,甚至程序结束。所以没有其他方法来启动远程机器的服务器??windows?在$telnet->close()之后;服务器返回到旧状态(未运行)。我希望服务器运行,甚至程序结束。