繁体   English   中英

Perl系统返回代码65280并成功

[英]Perl system return code 65280 and success

我正在运行一个Perl脚本,我在其中使用命令system来执行SSH连接。

它看起来像这样:

$test_result = '/home/ergaconfigs/sauvegarde-configs/configs/test';

sub ssh_connect {
        my $test = system (`ssh -i /home/ergaconfigs/sauvegarde-configs/rsa_keys/key_config_saver -o "StrictHostKeyChecking no" ergaconfigs\@10.252.0.27 "show configuration | display set" > $test_result `);

        print "resultat de la commande : $test \n le code d erreur est $!";
}

但我想确保SSH连接成功。 这就是我正在查看system返回码的原因。
SSH连接成功并且文件正确写入时 ,输出为:

resultat de la commande : 65280
le code d erreur est 

无论ssh连接的结果是什么(网络不可达等等),我都有相同的输出。 有人可以解释一下为什么吗?

我不知道为什么你在命令中使用systembackticks

请参阅此内容以了解systembacktickshttps//stackoverflow.com/a/800105/4248931

如果您想要命令的商店输出,请使用backticks ,如果您不关心输出使用system

从代码中删除system并检查输出:

$test_result = '/home/ergaconfigs/sauvegarde-configs/configs/test';

sub ssh_connect
{
    my $test = `ssh -i /home/ergaconfigs/sauvegarde-configs/rsa_keys/key_config_saver -o "StrictHostKeyChecking no" ergaconfigs\@10.252.0.27 "show configuration | display set" > $test_result`;
    print "resultat de la commande : $test \n le code d erreur est $!";
}

如上所述,代码中的反引号实际上是运行ssh命令,然后从那里输出的(可能是空的) stdout就是传递给system命令的内容。

我希望这不是你想要的。 如果是这样,请用正常的双引号替换反引号。 然后,您需要更改命令中的任何双引号 - 单引号应该这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM