1

我需要创建一个可以在盒子CentOS 5.x上运行的脚本。CentOS 6.xCentOS 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::Simpleqx但没有运气捕获输出。

我的一些失败尝试:

失败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变量留空。如果我遗漏了什么,请告诉我。谢谢 :)

4

1 回答 1

2

从 ThisSuitIsBlackNot 的建议中弄清楚了。我在 perl 中找到了从外部 *nix 命令获取 STDOUT、STDERR 和响应代码,它向我展示了如何更新我的代码以获取 stderr,如下所示:

my $output = qx(ssh root\@10.100.10.56 python -V 2>&1);
print "out: " . $output . "\n";

这给了我我需要的东西。谢谢!

于 2014-09-26T22:02:49.903 回答