我正在运行一个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连接的结果是什么(网络不可达等),我都有相同的输出。有人可以解释一下为什么吗?

最佳答案

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

我希望这不是您想要的。如果是这样,请用普通的双引号将反引号替换。然后,您需要更改命令中的所有双引号-单引号应该起作用。

07-26 08:56
查看更多