0

我是 Perl 的新手 :)

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

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

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


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

键入“帮助”以获取所有顶级命令的列表。

hpasmcli>

现在需要输入“show dimm”:


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

键入“帮助”以获取所有顶级命令的列表。

hpasmcli>显示暗淡

然后我将在服务器中获取内存配置。

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

谢谢您的帮助!

4

1 回答 1

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";
于 2013-07-21T09:06:14.680 回答