Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果在perl中使用telnet的条件不起作用_Perl - Fatal编程技术网

如果在perl中使用telnet的条件不起作用

如果在perl中使用telnet的条件不起作用,perl,Perl,我试图使用if条件检查命令是否已通过,但它不起作用。即使装载成功,它也会转到失败消息。当我输入这个命令时,它会在没有任何消息的情况下运行到提示符,因此我将其与“”进行比较。当我对目标文件夹执行“ls”操作时,它会显示源文件夹的所有内容。有什么帮助吗?我的if条件正确吗 my $port = new Net::Telnet->new(Host=>$ip,Port=>$ip_port,Timeout => "$timeout", Dump_Log => "dumplo

我试图使用if条件检查命令是否已通过,但它不起作用。即使装载成功,它也会转到失败消息。当我输入这个命令时,它会在没有任何消息的情况下运行到提示符,因此我将其与“”进行比较。当我对目标文件夹执行“ls”操作时,它会显示源文件夹的所有内容。有什么帮助吗?我的if条件正确吗

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::Telnet
cmd
方法在成功时返回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("..") ) {
    ...
}