我正在尝试读取 Nxlog 中命令的输出last
。我想定期last
对utmp
文件运行。换句话说,我想安排一个 shell 命令以时间间隔运行并将输出作为日志事件传输。换句话说,我想 <Schedule>
在模块中包含子句im_exec
,但这似乎是不可能的,所以我正在尝试其他方法(示例适用于 Linux):
<Input sample_umtp_linux>
Module im_null
<Schedule>
Every 1 sec
Exec exec("/usr/bin/last", "-f", "/var/run/utmp");
</Schedule>
</Input>
<Output out_debug>
Module om_file
File '<mydir>/debug.log'
</Output>
<Route processwtmp>
Path sample_umtp_linux => out_debug
</Route>
我没有收到任何错误消息,但也没有收到任何输出。有没有办法捕获输出并将其输入到 Nxlog 路由中?
(附加限制:我将把解决方案部署到 Hp Ux,因此在可用的系统工具方面,我的选择有点有限。我希望尽可能少地依赖 Nxlog 本身之外的东西。)
答案1
我找到了一个适用于 Linux 的、相当明显的解决方案:
<Input sample_umtp_linux>
Module im_exec
Command <my_script_dir>/run_last_forever.sh
</Input>
使用脚本,run_last_forever.sh
如下所示:
#!/bin/sh
while true
do
/usr/bin/last -f /var/run/utmp
sleep 1
done
然而,看来 Nxlog 毕竟无法为 HP-UX 构建。但那是另一个问题。