linux - 当在 stdin 上传输数据时,调用 ausearch 的脚本的行为有所不同

标签 linux bash shell

有人可以解释为什么通过 STDIN 传递 bash 脚本数据会导致脚本中的命令无法运行吗?

脚本:

#!/bin/bash
ausearch -i -a 1221217

如果我运行以下命令,它会按预期输出 ausearch 结果:

./au.sh

但是,如果我这样做:

echo "blah" | ./au.sh

然后它输出:

<no matches>

两种执行方法应该返回相同的结果(因为 ausearch 是硬编码的),但 stdin 似乎破坏了它。

不是询问如何在 bash 脚本中读取 stdin 数据。

最佳答案

如果 stdin 是管道,则

ausearch 会更改其行为。如果是,它将通过标准输入而不是通过审核守护程序日志进行搜索。您可以使用 --input-logs 强制它从日志中读取。

echo "blah" | ausearch -i -a 1221217 --input-logs

重定向 stdin 将达到相同的目的。

#!/bin/bash
ausearch -i -a 1221217 < /dev/null

关于linux - 当在 stdin 上传输数据时,调用 ausearch 的脚本的行为有所不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54426839/

相关文章:

Linux 项目 : bash script to archive and remove files

c++ - 从另一个线程访问线程本地

c - 在 C 中使用 free() 时出错

linux - 如何修复此脚本以获得正确的输出?

shell - 在 Gitlab CI 构建中,我无法通过私钥 ssh 进入 AWS EC2

bash - 如何使用 Groovy 执行带有反引号的 shell 命令?

linux - 如何只允许某些命令在我的 shell 中运行?

bash - 向父 bash 报告孙子进程 ID

bash - 限制脚本发送警报

linux - 自定义 PAM 配置 : How can I pass username/password parameters to an pam_exec. 所以模块?