我正在使用 Connectwise Automate(以前称为 LabTech)在远程系统上运行 bash 脚本并执行 bash 命令。这些系统都是Linux和MacOS。 Connectwise Automate (CWA) 对于 *nix 系统有一些特殊的行为,其中如果命令或表达式以状态代码 0 退出,则所有输出,无论流(stdout 或 stderr)如何,都将替换为单词“OK”。当返回非 0 退出状态时,输出将正确显示在 CWA 的远程终端和脚本输出中。我还没有收到输出替换行为基于退出代码的明确确认,但我相信它很有可能。
对于一个简单的示例,echo "Test"
返回OK
,而ls ./no/such/directory
产生适当的异常。这是 CWA 的一个长期存在的问题,如果不将命令输出传输到磁盘上的文件并使用 CWA 特有的函数读取该文件,与供应商的合作不会产生任何解决方法或积极的结果。然而,这会产生不一致的结果,因为写入文件的命令输出通常只是OK
.
我尝试过的
我发现并尝试了许多可能的解决方案。我发现这问题,专门针对less
,并且依赖于less
的-K
论点。我尝试调整部分解决方案,但没有成功调用bash -c
和trap
,尽管我的实现可能不正确。我还尝试了类似 的操作echo "Test" && false
,它返回OK
,可能(在我看来)是由于第一个命令在评估 之前以退出代码 0 返回false
。
问题重述
是否可以“哄骗”(可以这么说)任意实用程序,特别是通过bash
或调用时sh
,以我选择的退出状态返回,或以其他方式返回任何非 0 退出状态,并且仍然让给定实用程序的输出命中 stdout/标准错误?