如果在perl中使用telnet的条件不起作用
我试图使用if条件检查命令是否已通过,但它不起作用。即使装载成功,它也会转到失败消息。当我输入这个命令时,它会在没有任何消息的情况下运行到提示符,因此我将其与“”进行比较。当我对目标文件夹执行“ls”操作时,它会显示源文件夹的所有内容。有什么帮助吗?我的if条件正确吗如果在perl中使用telnet的条件不起作用,perl,Perl,我试图使用if条件检查命令是否已通过,但它不起作用。即使装载成功,它也会转到失败消息。当我输入这个命令时,它会在没有任何消息的情况下运行到提示符,因此我将其与“”进行比较。当我对目标文件夹执行“ls”操作时,它会显示源文件夹的所有内容。有什么帮助吗?我的if条件正确吗 my $port = new Net::Telnet->new(Host=>$ip,Port=>$ip_port,Timeout => "$timeout", Dump_Log => "dumplo
my $port = new Net::Telnet->new(Host=>$ip,Port=>$ip_port,Timeout => "$timeout", Dump_Log => "dumplog.log", Errmode=> "return" );
if($port->cmd("mount -t nfs -o nolock <path-of-source-folder> <destination-folder>") eq "")
{
print "Successful\n";
}
else{
print "Failed.\n ";
}
my$port=new-Net::Telnet->new(主机=>$ip,端口=>$ip\u-port,超时=>“$Timeout”,转储日志=>“dumplog.Log”,Errmode=>“return”);
如果($port->cmd(“mount-tfs-onlock”)eq“”)
{
打印“成功”\n;
}
否则{
打印“失败。\n”;
}
在标量上下文中,Net::Telnetcmd
方法在成功时返回1(不是字符串)。您的支票应该是:
if ($port->cmd("mount -t nfs -o nolock <path-of-source-folder> <destination-folder>") == 1)
{
print "Successful\n";
} else {
print "Failed.\n";
}
或:
有关更多信息,请参阅。您对结果的检查似乎有误。文件上说 此方法发送命令$string,并读取该命令返回的字符,直到并包括匹配提示。假设您要发送到的程序是某种命令提示解释器,如shell。 命令$string会自动附加输出\u记录\u分隔符,默认为“\n”。这类似于某人键入命令并按回车键。设置输出\记录\分隔符以更改此行为 在标量上下文中,从远程端读取的字符被丢弃,成功时返回1 因此,您需要在标量上下文中进行检查
if ($port->cmd("..") ) {
...
}
调用
new
两次。端口连接成功。没有什么可担心的。问题已经在中指出了——如果您想让我们看看您的代码,请先解决明显的问题,如果只是为了将讨论重点放在您的实际主题上。
my $out;
my $ret = $port->cmd("mount ...", [Output => \$out]);
if ($ret == 1)
{
# inspect $out
}
if ($port->cmd("..") ) {
...
}