Perl - 打开CLI环境并发送命令

时间:2013-07-21 08:48:19

标签: perl bash ssh command-line-interface

我是Perl的新人:)

我试图编写一个简单的脚本,只需打开一个CLI环境(通过执行bash命令) 然后向该环境发送命令(仅限熟悉此命令的环境)

例如: 我的linux在HP服务器机器上运行。 如果我想在root用户下看到内存配置,我需要 执行:' hpasmcli "然后我很好地得到以下环境:

root @ xxx:/>% hpasmcli 适用于Linux的HP管理CLI(v2.0) 版权所有2008 Hewlett-Packard Development Group,L.P。


注意:并非所有Proliant服务器都支持某些hpasmcli命令。

键入' help'获取所有顶级命令的列表。

hpasmcli>

现在需要输入"显示dimm":


注意:并非所有Proliant服务器都支持某些hpasmcli命令。

键入' help'获取所有顶级命令的列表。

hpasmcli> 显示dimm

然后我将获得服务器中的内存配置。

所以我想写一个Perl脚本来完成这个简单的任务。 我试图使用"期待"和"打开(FH," | / sbin / hpasmcli")但我只能登录 到CLI环境而不发送命令" show dimm"

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

每次写入后,您可能需要刷新输出缓冲区:

open my $CMD, "| /sbin/hpasmcli"
    or die "Couldn't pipe output to hpasmcli: $!";


my $old_out = select $CMD;
$| = 1;    #perl's autoflush global variable which affects the current output file handle
select $old_out;

print {$CMD} "show dimm";