Nagiosbashスクリプトに次の行があります。これは、指定されたネットワークカードのアップエラー率とダウンエラー率を取得するために使用されています。
if=`awk -v interface="$INTERFACE" '$1 ~ "^" interface ":" { split($0, a, /: */); $0 = a[2]; print $3 " " $11 }' /proc/net/dev`
私は今日までawkを使ったことがないので、少し道を見つけています。
ご覧のとおり、値$ INTERFACEをインターフェイスとしてawkスクリプトに渡し、先頭の行をフィルタリングしますinterface:
(例:eth0:)。次に、コロンスペースを区切り文字として使用して行を分割します。次に、何らかの理由で、実際に必要な値を抽出する前に、配列の3番目のエントリを$0に割り当てます。
声明は不必要であるように私にsplit($0, a, /: */)
は$0 = a[2]
思えますが、私は間違っているかもしれません!$3と$11を参照すると、$0にa[2]を割り当てると何かが変わりますか?最初の2つのステートメントなしでスクリプトを試しましたが、出力は同じですが、見逃したコーナーケースがあるかもしれません...
前もって感謝します
リッチ