プログラムで抽出する簡単な方法を探しています。プライベートコンピュータの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