[英]why when I exit a perl script with -1 I receive 65280 in parent shell script?
[英]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连接的结果是什么(网络不可达等等),我都有相同的输出。 有人可以解释一下为什么吗?
我不知道为什么你在命令中使用system
和backticks
。
请参阅此内容以了解system
和backticks
: https : //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.