新しいLinuxサーバーがネットワーク経由でマルチユーザーモードで起動したときに最初に実行される起動シェルスクリプトがあります。
完了したら、現在udp / tcpポート514を使用してsyslog-ngを実行している中央ログホストサーバーと、ポート80でWebサーバーを実行している中央ログホストサーバーにエラー状態を報告しようとします。したがって、php / perlを使用してhttp形式の情報を受信できます。 ..)
ただし、顧客がビルドを指定して構成ファイルを変更したくないため、パッケージをインストールできません。したがって、syslogはrawファイルなので、wget / curlがインストールされていない可能性があります。
私も同様のことをしたかったです。
exec 3<>/dev/tcp/www.google.com/80
echo -e “GET / HTTP/1.1\nhost: http://loghost.local/message\n\n” >&3
しかし、Debian コンピュータでは、これらのデバイスが無効になっていることがわかりました。
明らかに、次のようなさまざまなオプションをカスケードで配置できます。
if [ -x wget ]; then
echo "using wget to post message"
elif [ -x curl ]; then
echo "using curl to post message"
elif [ ]; then
exec 3<>/dev/tcp/loghost.local/80
echo -e “GET / HTTP/1.1\nhost: http://loghost.local/message\n\n” >&3
else
echo nc ## some netcat command so send stuff to udp 514...
fi
ロガーはローカル接続とソケット接続のみをサポートしているようで、Debian の制限が適用される場合があります。
サービスから多くを構成できるため、オプションが多いようです。このようなものとても愚かな考え特定のドメインに対して欠落しているレコードをキャッシュするようにローカルネームサーバーを構成し、ブートストラップスクリプトが次のように実行されるようにします。
getent hosts logmessage.sourceserver.mydomain.com
おそらく、指定されたログファイルから状態を解析できます... ;-)
明らかにnetcatがインストールされている場合はオプションですが、一部のサーバービルドでは非常に柔軟性があるため、netcatなどのエントリを積極的に削除します。
とにかく、この質問はsyslog.confファイルを一時的に交換できるため、実用的な目的よりも情報提供に近いです。しかし、サーバーの削除に触れることなくこれを行うのも面白いでしょう。