我是Perl新手:)
我正试图写一个简单的脚本,只需打开一个CLI环境(通过执行bash命令)然后将命令发送到该环境(只有熟悉该命令的环境)
例如: 我的linux正在HP服务器上运行。如果我想查看root用户下的内存配置,我需要执行:'hpasmcli"然后我就可以获得以下环境:
root@xxx:/>%hpasmcli适用于Linux的HP management CLI(v2.0)版权所有2008 Hewlett-Packard Development Group,L.P.
注意:并非所有Proliant服务器都支持某些hpasmcli命令。
键入"help"以获取所有顶级命令的列表
hpasmcli>
现在需要输入"show dimm":
注意:并非所有Proliant服务器都支持某些hpasmcli命令。
键入"help"以获取所有顶级命令的列表
hpasmcli>显示dimm
然后我将在服务器中获取内存配置。
所以我打算写一个Perl脚本来完成这个简单的任务。我尝试使用"expect"one_answers"open(FH,"|/sbin/hpasmcli"),但我只能登录到CLI环境,而不是发送命令"show dimm"
谢谢你的帮助!
您可能需要在每次写入后刷新输出缓冲区:
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";