【问题标题】:how to log just the output of commands with expect如何只用expect记录命令的输出
【发布时间】:2013-11-14 09:57:14
【问题描述】:

我正在使用 expect 在远程机器上执行一堆命令。然后,我从一个 shell 脚本调用期望脚本。

我不希望期望脚本将发送的命令记录到标准输出,但我希望它记录命令的输出,因此我的 shell 脚本可以根据该结果执行其他操作。

log_user 0

隐藏命令和结果,所以它不符合我的需要。我怎么知道期望记录结果?

【问题讨论】:

    标签: linux shell expect


    【解决方案1】:

    嗯...我不确定您是否可以这样做,因为看到您发送的命令的原因是远程设备将它们回显给您。这是标准程序,这样做是为了让用户在与设备交互时看到他或她输入的内容。

    我想说的是,设备输出到发出的命令,回显命令都是衍生进程的标准输出的一部分,因此我不相信你可以分开一个。

    现在我想到了,我认为您可以将终端配置为显示回显命令...但不确定您将如何使用未使用的衍生进程来执行此操作交互式终端。

    如果您找到方法,请告诉我们,我很想知道是否有方法。

    【讨论】:

    • 目前我发现的唯一方法是将 log_user 设置为 0,使用 expect_out 捕获每个命令的输出并使用 puts 打印它们,但这是矫枉过正且容易出错。
    • 你不能调整你的 shell 脚本来期待输出中的命令,并处理/忽略它们吗?那不是更容易的路线吗?
    • 我对期望的解决方案感到不舒服,所以我最终使用了 python 的paramiko,因为它允许执行命令并获取标准输出、标准错误和退出状态,并允许使用密码或 ssh 连接到 ssh键
    猜你喜欢
    • 2012-10-27
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    • 2019-10-26
    • 2011-04-13
    • 2012-10-02
    • 1970-01-01
    • 2019-05-06
    相关资源
    最近更新 更多