プログラムでプライベートIPアドレスを抽出する

プログラムでプライベートIPアドレスを抽出する

プログラムで抽出する簡単な方法を探しています。プライベートコンピュータのIPv4アドレス。

似たようなものこの問題ただし、プライベートIP専用です。

たとえば、次のものを抽出できます。みんな次のコマンドを使用します。

ifconfig | grep 'inet addr' | cut -d ':' -f 2 | awk '{ print $1 }'

出力例:

6.11.71.78
10.0.2.15
127.0.0.1

同様に、プライベートアドレス空間のIPだけを取得したいと思います。したがって、同じ例を参照すると、出力は次のようになります。

10.0.2.15

ベストアンサー1

そこには何もありません。プライベートIPスペース常に3つのIPアドレスブロックのうちの1つから始めてください。

  • 24ビットブロック - 10.XXX
  • 20ビットブロック - 172.16.XX - 172.31.XX
  • 16ビットブロック - 192.168.XX

したがって、上記のタイプのIPアドレスを見つけるにはgrepを使用してください。

$ ifconfig | grep 'inet addr' | cut -d ':' -f 2 | awk '{ print $1 }' | \
      grep -E '^(192\.168|10\.|172\.1[6789]\.|172\.2[0-9]\.|172\.3[01]\.)'
192.168.1.20

詳細

私がgrep使用するものは正規表現を使用します。この場合、私たちは次のパターンを探しています。

  • 192.168
  • 10.
  • 172.1[6789]。
  • 172.2[0-9]。
  • 172.3[01]。

また、これらのパターンの1つで始まる数字だけが明示的に一致します。 Anchor(^)は私たちにこれらの能力を提供しています。

その他の例

grep結果をテストするには、ファイルに次の行を追加するだけです。

$ cat afile 
192.168.0.1
10.11.15.3
1.23.3.4
172.16.2.4

その後、次のようにテストできます。

$ cat afile | grep -E '^(192\.168|10\.|172\.1[6789]\.|172\.2[0-9]\.|172\.3[01]\.)'
192.168.0.1
10.11.15.3
172.16.2.4

おすすめ記事