bash - 将命令输出重定向到文件(现有命令)

标签 bash ansible

要将命令的标准输出(在本例中为 echo hi)写入文件,您可以执行以下操作:

echo hi > outfile

我想要一个命令而不是重定向或管道,这样我就不需要调用 shell。这最终用于 Ansible,它调用 python 的 subprocess.POpen

我正在寻找:

stdout-to-file outfile echo hi

tee 可以很容易地将标准输出复制到文件中,但它接受标准输入,而不是单独的命令。

是否有一个通用的、可移植的命令可以执行此操作?当然,写一个很容易,但这不是问题所在。最终,在 Ansible 中,我想做的是:

command: to-file /opt/binary_data base64 -d {{ base64_secret }}

代替:

shell: base64 -d {{ base64_secret }} > /opt/binary_data

编辑:寻找在 RHEL 7、Fedora 21 上可用的命令

最佳答案

您实际上要找的是一个 Ansible 模块,它有两个参数,

  1. 实际命令
  2. 重定向上述命令输出的文件

在这种情况下,您可以使用 shell 模块而不是 command 模块,它允许这样的重定向。

例如

- shell: /usr/bin/your_command >> output.log

您可以检查 source and example documentation here.

这是最简单的。我相信你知道这一点。我只是将此内容传达给阅读此线程的 shell/命令模块的新手。

如果你不喜欢那样做,你仍然可以编写一个包装器模块,它接受“文件名”作为参数并将运行为,

- custommodule: output.log /usr/bin/your_command

您可能需要做的就是 fork 存储库、查看现有模块并相应地自定义您的模块。

关于bash - 将命令输出重定向到文件(现有命令),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28777306/

相关文章:

mysql - Bash 函数返回似乎无法正常工作

bash - 我可以在 bash 的文件路径中使用变量吗?如果是这样,如何?

Bash,始终在屏幕顶部显示彩色条

ansible - 如何在ansible中配置UFW拒绝策略而不断开连接?

python - <back space> 在 shell 中的 python 和 ipython 中不起作用

python - 从 bash 脚本调用远程交互式 python 脚本 : Input request lag

ansible - 尝试通过 ansible 在 macOS 上创建用户

makefile - 将 -e 命令传递给 Ansible make 模块

ansible - 如果其他在 ansible 打印语句中

ansible - 如何在 list 文件中使用 ansible-vault 加密密码?