私のサーバーからログファイルへの接続を確認するときに、私のカスタムメッセージをリダイレクトしたいと思います。条件を解放するには終了1を使用します。しかし、条件をより詳細にしてログファイルにリダイレクトするにはどうすればよいですか?
awk
メッセージをリダイレクトによく合うように内部に実装するにはどうすればよいですか?
awk { ... "Connectivity to ${rda} failed, exiting" >> ${log} ... } then
私のスクリプトは次のとおりです。
#/bin/bash
rda="www.google.com"
log="/var/log/connectivity.log"
if nc -zw1 ${rda} 22 && echo |openssl s_client -connect ${rda}:22 2>&1 |awk '
handshake && $1 == "Verification" { if ($2=="OK") exit;exit 1; }
$1 $2 == "SSLhandshake" { handshake = 1 }'
then
echo -e "Connectivity works" >> ${log}
exit 0
fi
私のawkバージョンは次のとおりです。
# awk -W version mawk 1.3.3 Nov 1996, Copyright (C) Michael D. Brennan
compiled limits: max NF 32767 sprintf buffer 2040
ベストアンサー1
print
次のファイルを使用できます。awk
print "data" >"somefile.log"
または
filename="somefile.log"
print "data" >filename
を使用すると、>
最初のファイルのファイルが切り捨てられますprint
が、スクリプトが終了するか明示的にファイルを開くまで、ファイルは開いたままになりますclose()
。ファイルが開かれると(最初のファイル以降print >
)、後続の呼び出しはprint >
切り捨てることなくファイルに追加されます。
既存のファイルに追加するにはprint >>
。
コマンドラインでログファイル名を使用する例:
... | awk -v out="$log" { print "this is a message" >>out }
または、
... | out=$log awk { print "this is a message" >>ENVIRON["out"] }
上記のコードは(おそらく)既存のファイル(パス名がシェル変数にあります)に追加されますlog
。 2番目の例では環境変数 out
$log
書き込むファイルパス(コマンドラインで設定awk
)