我正在运行一个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连接的结果是什么(网络无法访问等等),我都有相同的输出。有人能解释我为什么吗?
答案 0 :(得分:2)
我不知道您在命令中使用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 $!";
}
答案 1 :(得分:1)
正如所写的那样,代码中的反引号实际上是运行ssh
命令,然后从那里输出的(可能是空的)stdout
是什么被传递到system
命令。
我希望这不是你想要的。如果是这样,请用正常的双引号替换反引号。然后,您需要更改命令中的任何双引号 - 单引号应该这样做。