我需要创建一个适用于CentOS 5.x
和CentOS 6.x
框的脚本。 CentOS 5.x使用Perl 5.8
,CentOS 6.x使用Perl 5.10
。我们的目标是能够将ssh放入具有密钥交换的框中,然后运行python -V
,以确定默认版本是否为python 2.6
。
我猜我是否得到了一个适用于Perl 5.8的脚本,它也适用于5.10。我在Net::SSH:Any
取得了一些进展,不得不抛弃它,因为它看起来与Perl 5.12和更新版本一起使用。
我也尝试了IPC::System::Simple
和qx
,但没有抓住输出的运气。
我的一些失败尝试:
失败1:
use IPC::System::Simple qw(system systemx capture capturex);
my $output = capture("/usr/bin/ssh root\@10.100.10.56 python -V");
print "out: " . $output . "\n";
失败2:
my $output = qx(ssh root\@10.100.10.56 python -V);
print "out: " . $output . "\n";
失败3:
my @output = qx(ssh root\@10.100.10.56 python -V);
print "@output\n";
我不确定ssh的电话是否正在播放任何内容,我迫切需要进行健全性检查。当命令运行时,输出显示在屏幕上,但不存储在变量中,我可以对其进行子串检查。 $output
变量留空。如果我遗失了什么,请告诉我。谢谢:))
答案 0 :(得分:2)
从ThisSuitIsBlackNot的建议中找出它。我发现Getting STDOUT, STDERR, and response code from external *nix command in perl向我展示了如何更新我的代码以获得stderr,具体如下:
my $output = qx(ssh root\@10.100.10.56 python -V 2>&1);
print "out: " . $output . "\n";
这给了我所需要的东西。 THX!