我有一个程序a2log2pg,它接受apache2自定义日志并将其写入数据库。
在apache2。conf,我有一行代码定义了一个CustomLog并将其通过管道传输到a2log2pg。
CustomLog "|/usr/bin/a2log2pg" combined
其中combined是apache日志格式之一。
尽管一切都很好,但这种技术会导致a2log2pg以root身份运行。我宁愿以非特权用户的身份运行它,特别是一个名为a2logger的用户。
为此,我一直在尝试使用这句话:
CustomLog "| sudo -u a2logger /usr/bin/a2log2pg" combined
但apache随后拒绝启动。apache日志中的错误为:
No such file or directory: AH00104: unable to start piped log program ' sudo -u a2logger /usr/bin/a2log2pg'
是否有其他语法允许此操作?
暂时把apache放在一边,如果我尝试类似的东西,但仅使用shell脚本,它就可以工作:
$ cat 1234.txt
one
two
three
four
$ cat countlines.sh
#!/bin/bash
counter=0
while read line
do
((++counter))
done<&0
echo $USER counted $counter lines
然后,以root身份登录
# cat 1234.txt | sudo -u a2logger ./countlines.sh
a2logger counted 4 lines