ドキュメントによると、私は次のようなプログラムを実行できます。
destination knotifier { program('/path/to/executable'; };
そして、実行可能ファイルのstdinにログを送信します。しかし、実行しているプログラムがオプションへの引数として入力を必要とする場合はどうなりますか?それを行う方法はありますか?または、実行しているプログラムのラッパーを作成する必要がありますか?
Syslog-ngはコマンドの起動時にのみコマンドを実行するため、ほとんどのコマンドではラッパーを作成する必要があります。これは、コマンドが事実上、stdinからの入力を常に受け入れるデーモン自体である必要があることを意味します。
それは簡単ですが...
#!/bin/dash
while read line
do
/execute/my/app $line
done
残念ながら、このスクリプトは私には機能しません。おそらく、使用するディスプレイがわからないためです。ただし、スクリプトにXサーバーが必要ない場合は、このような単純な形式で機能するはずです。
Syslog-ngは起動時にのみプログラムを起動するため、これはあまり役に立ちませんが、xargs
が標準入力から位置引数を作成できるという事実は興味深いと思いました。
echo 'test' | /usr/bin/xargs -I '{}' /usr/bin/kdialog --passivepopup '{}' 2
私があなたを正しく理解していて、これがLinux上にある場合は、
/proc/self/fd/0
引数として。これは、プロセスの標準入力へのシンボリックリンクである必要があります。同様に、一部のシステムでは、
/dev/stdin
これは多くの場合、/proc/self/fd/0
への単なるシンボリックリンクです。これをテストするためのsyslog-ngを備えたシステムはありませんが、次のようなものが機能するはずです。
destination knotifier { program('/path/to/executable -i /proc/self/fd/0'); };
ここで、-iは、実行可能ファイルが必要な場合は、コマンドラインスイッチの代わりに使用されます。/dev/fd/0も使用されていますが、/ procを直接使用する傾向があります。詳細については、man proc
を参照してください。