ポート2181を使用してリモートシステムをキャプチャするには、次のawkラインを使用します。
netstat -nape | awk '{if ($4 == "43.64.56.36:2181") print $4, $5 ,$6 ,$9;}'
43.64.56.36:2181 43.64.56.60:40151 ESTABLISHED 9027/java
しかし、awkでIPアドレス値を表すaパラメータを使用すると、そのパラメータは実際のIPアドレスを取得できないようです。
netstat -nape | awk -v a="43.64.56.36" '{if ($4 == a:2181) print $4, $5 ,$6 ,$9;}'
出力なし
私はいつここで間違っていましたか?
答え1
コマンドを実行すると構文エラーが発生します。
GNUの使用awk
:
awk: cmd. line:1: {if ($4 == a:2181) print $4, $5 ,$6 ,$9;}
awk: cmd. line:1: ^ syntax error
BSDの使用awk
:
awk: syntax error at source line 1
context is
{if ($4 == >>> a: <<<
awk: illegal statement at source line 1
そしてmawk
:
mawk: line 1: syntax error at or near :
これらはすべて構文エラーを指しますa:2181
。
awk
IP番号を含む文字列で変数を正しく設定しましたが、a
その値を連結して新しい文字列を形成するには、その値を文字列 :2181
として使用する必要があります。:2181
a ":2181"
また、明示的なステートメントを使用する代わりに、入力を一致させて操作を実行する慣用的な方法を使用することも考慮する必要がありますif
。
awk -a="42.54.56.36" '$4 == a ":2181" { print $4, $5, $6, $9 }'
同じ行に他のステートメントがない場合は、inでステートメントを終了する必要はありません;
。awk
答え2
次の構文で解決しました。
netstat -nape | awk -v a="43.64.56.36" '{if ($4 == a":2181") print $4, $5 ,$6 ,$9;}'