我写了一些小代码,使用Perl连接到远程服务器但是观察错误消息
#!/usr/bin/perl -w
use Net::Telnet;
$telnet = new Net::Telnet ( Timeout=>60, Errmode=>'die');
$telnet->open('192.168.50.40');
$telnet->waitfor('/login:/');
$telnet->print('queen');
$telnet->waitfor('/password:/');
$telnet->print('kinG!');
$telnet->waitfor('/:/');
$telnet->print('vol >> C:\result.txt');
$telnet->waitfor('/:/');
$telnet->cmd("mkdir vol");
$telnet->print('mkdir vol234');
$telnet->cmd("mkdir vol1");
$telnet->waitfor('/\$ $/i');
$telnet->print('whoamI');
print $output;
但是在跑步时我遇到了以下错误
C:\>perl -c E:\test\net.pl
E:\test\net.pl syntax OK
C:\>perl E:\test\net.pl
command timed-out at E:\test\net.pl line 13
C:\>
在这方面帮助我。我是Perl的新手。
答案 0 :(得分:1)
我不确定Net :: Telnet,但使用'/:/'(带引号)我猜是问题所在。即/:/(在斜杠内) - 这是正则表达式,但引号只是字符串应出现在终端上(即它等待字符串'/:/' - 斜杠,两个点,斜杠)。
要调试此类程序(如果Net :: Telnet不与远程系统进行交互),您可以简单地将:print“我等待登录... \ n”在waitfor()
答案 1 :(得分:0)
为什么不使用Net::Telnet的login
方法登录?当你处于如此低的水平时,你必须自己处理所有细节。如果你查看该方法的源代码,你会发现它做了很多工作,包括解决Linux上的登录错误的问题。