アクティブ接続のnetstat結果の解析に関する考え

アクティブ接続のnetstat結果の解析に関する考え

私のサーバーへのリバースSSH接続を作成してリモートでSSH経由で管理できるリモートデバイスがいくつかあります。彼らはカスタムポートを介して私に再接続されます。サーバーでタスクを実行すると、現在接続されているnetstat -an | grep 127.0.0.0.1:デバイスのリストが表示されます。出力は次のとおりです。

tcp        0      0 127.0.0.1:6001          0.0.0.0:*               LISTEN

tcp        0      0 127.0.0.1:6002          0.0.0.0:*               LISTEN

tcp        0      0 127.0.0.1:6003          0.0.0.0:*               LISTEN

ここで、600xはデバイスが接続されているポートです。私の問題はこれです。現在接続されているデバイスを表示しているサーバーで実行できるスクリプトを作成したいと思います。私のスクリプトが読み取ることができ、次のように自分のデバイスを一覧表示する設定ファイルが必要です。

NORTH:6001

SOUTH:6002

EAST:6003

WEST:6004

スクリプトはコマンドの出力を解析し、netstat出力は次のようになります。

利用できるリンク: 北、南、​​東

非アクティブ接続:WEST

あまりにも混乱しないことを願っています。 grepやawkでできることですか?

答え1

以下は3段階です。

  1. netstatからアクティブポート名を抽出します。

    netstat -an | grep 127.0.0.1: | awk -F "[ :]+" '{print $5}'

awkスペースとコロンのセットを区切り文字として指定し、ポートIDのみを選択します。

  1. device_list.txtgrepと手順1のコマンド出力をパターンとして使用して、デバイスリストファイル(名前付き)でこれらのポートを比較します。

    netstat -an | grep 127.0.0.1: | awk -F "[ :]+" '{print $5}' | grep -f - device_list.txt

これは次のような出力を提供します

NORTH:6001
SOUTH:6002
EAST:6003
  1. -vgrep aを使用して非アクティブ接続を取得できます

    netstat -an | grep 127.0.0.1: | awk -F "[ :]+" '{print $5}' | grep -v -f - device_list.txt

これの出力は次のとおりです。

WEST:6004

その後、上記の内容を中心にスクリプトを作成して目的の形式で印刷できます。

関連情報