awkから条件付きメッセージリダイレクト

awkから条件付きメッセージリダイレクト

私のサーバーからログファイルへの接続を確認するときに、私のカスタムメッセージをリダイレクトしたいと思います。条件を解放するには終了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

おすすめ記事