【问题标题】:Perl - open a CLI environment and send commandsPerl - 打开 CLI 环境并发送命令
【发布时间】:2013-07-21 17:16:56
【问题描述】:

我是 Perl 新手 :)

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

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

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


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

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

hpasmcli>

现在需要输入“show dimm”:


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

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

hpasmcli> 显示暗淡

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

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

感谢您的帮助!

【问题讨论】:

标签: perl bash ssh command-line-interface


【解决方案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";

【讨论】:

  • 谢谢。我试过了,但我得到了与我使用 open(FH,...") 相同的结果,它只是登录到 CLI 环境,但没有发送第二个命令。
  • 先尝试一些更简单的方法:看看是否可以通过管道将一些输出传递给 cat 命令。
  • 可能需要在命令中添加行尾标记\nprint {$CMD} "show dimm\n";
猜你喜欢
  • 2014-04-05
  • 1970-01-01
  • 2018-10-29
  • 2017-05-23
  • 1970-01-01
  • 2021-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多