の出力から次をどのように抽出できますかnetstat -anp
?
- IPアドレスの削除
- リモートポート
- ローカルアプリケーション名
- ローカルポート
- PID
私のconkyで実行するにはこの情報が必要です。 PID番号の最後の数字が欠落していることを除いて、すべてが表示されます。コマンドがわかりませんsed
。助けてください。
コマンドは次のとおりです。
netstat -anp | grep 'ESTABLISHED' | sed -r 's|.*192.[0-9.]+:([0-9]*)\s*([0-9.]+):([0-9]+)[^ESTABLISHED]+\ESTABLISHED ([0-9]*)[^/]+/([a-zA-Z0-9-]*)|\5 \2 \1 \3 \4|' | awk '{printf("%-14s %-15s %8s %6s %8s\n",$1,$2,$3,$4,$5)}'
正しいコマンド出力を表示するには、設定された接続(Firefoxなど)を開く必要があります。
答え1
問題はsedパターンのこの部分にあります。
([0-9]*)[^/]+/
0..9までの任意の数字をキャプチャし、スラッシュ「/」ではなく1文字以上の文字「/」をキャプチャします。これは文字列と一致しようとします。
ESTABLISHED 2783/firefox
最初はと一致します2783
が、一致するには最後の数字3を削除する必要があります。スラッシュではない。
回避策は、0一致を許可するように+
aに置き換えることです。*
([0-9]*)[^/]*/