Perl:Prompt似乎会导致Perl代码退出,而不会给出正确的输出
2014年12月10日 有人能帮我解决这个问题吗?在远程Windows服务器上运行时,字符“>”会导致perl程序过早退出 实际输出为:Perl:Prompt似乎会导致Perl代码退出,而不会给出正确的输出,perl,Perl,2014年12月10日 有人能帮我解决这个问题吗?在远程Windows服务器上运行时,字符“>”会导致perl程序过早退出 实际输出为: K:\ Volume in drive K is DataDisk Volume Serial Number is E8BD-C593 Directory of K:\ 04/15/2011 05:25 AM <DIR K:\>dir Volume in drive K is DataDisk Volume Serial Numb
K:\ Volume in drive K is DataDisk
Volume Serial Number is E8BD-C593
Directory of K:\
04/15/2011 05:25 AM <DIR
K:\>dir
Volume in drive K is DataDisk
Volume Serial Number is E8BD-C593
Directory of K:\
12/08/2014 11:18 PM <DIR> ftpvol
04/15/2011 05:25 AM <DIR> Images
1 File(s) 0 bytes
16 Dir(s) 246,180,012,032 bytes free
提前谢谢
2014年12月11日
一个“回复”按钮将是很好的,而不是必须编辑一个原始端口
我不太明白拉马先生的建议。因此,如果使用函数print()和waitfor(),则不应使用promt。在这种情况下,我删除了提示符,但是代码仍然不起作用。您是否可以发布一个工作代码示例,该示例将检索打印输出中的字符“”,而不将其视为DOS提示符?文档中说,如果您没有使用print()
和waitfor()
进行通信,您只需要使用prompt
属性(它用于login()
在您的情况下,将从响应中删除
提示
值。请尝试将提示
值设置为永远不会出现的值,这样可以解决您的问题。请注意选择的值作为提示
值将被视为正则表达式
#!/usr/bin/perl
use Net::Telnet ();
my $node = $ARGV[0];
my $ipAddress = $ARGV[1];
my $username = $ARGV[2];
my $password = $ARGV[3];
my $mmlCommand0 = "hostname&prcstate -l";
my $filedate = `date +%Y%m%d`; #date in format YYYYMMDD
chomp($filedate); #deletes newline character at end
my $numArgs = $#ARGV + 1;
if($numArgs == 4){
my $telnet = new Net::Telnet( Host=>$ipAddress, Port=>23, Timeout=>20, Errmode=>'die', Prompt=>'/>/');
$telnet->open() or die "hai $telnet->errmsg ";
$telnet->waitfor('/login name:/');
$telnet->print($username);
$telnet->waitfor('/password:/');
$telnet->print($password);
$telnet->waitfor('/Windows NT Domain:/');
$telnet->print("");
$telnet->waitfor('/>/');
## get printouts
#print $telnet->cmd($mmlCommand0);
print $telnet->cmd("K:");
print $telnet->cmd("dir");
}
else{
print "\n!!! Correct syntax is: command <node> <IP address> \nExample: \n\n";
}
print "\n\n";
exit(0);
my $telnet = new Net::Telnet( Host=>$ipAddress, Port=>23, Timeout=>20, Errmode=>'die');
$telnet->prompt('/$/');