web-dev-qa-db-ja.com

IPアドレスの検証(IPv4およびIPv6)

文字列がbashスクリプトの有効なIPアドレスを表していることを確認したいのですが。私は他の多くの人と同じように、正規表現でこれを実行しようとする落とし穴に陥っていると思います。これはIPv4では十分に機能しますが、IPv6は(ゼロの圧縮をサポートするため)より複雑であり、複雑で特に読みやすいソリューションではありません。

しかし、unixとlinuxはIPアドレスを十分に理解しているので、bashでIPアドレスを検証できるより良い方法があるかどうか疑問に思っていますか? do-soに使用できる合理的に一般的なツールが望ましい。

Pythonのような他の言語を使用してこれを行うことは避けたいと思います。PHPのfilter_var 関数。それは機能しますが、正規表現と同様に、使用を避けたい第二言語を導入しています。

最後に、IPアドレス範囲(0.0.0.0-255.255.255.255や0.0.0.0/16など)も処理できるソリューションがある場合は理想的ですが、自分で処理できます

5
Haravikk

Ipcalc が役立ちます:

ipcalc -c <ip-address>
1
Rolf Rander

bashは、関連するinet_pton(3)システムコールへの直接アクセスをおそらく欠いているため、おそらく何かを呼び出す必要があります。 sipcalc(これは、さまざまなUNIXのポートまたはパッケージツリーにある必要があります)。より高レベルの言語は、おそらくinet_pton(3)呼び出しまたは同等のものでも取得できますが、詳細は言語固有です。私は NetAddr::IP Perlのサブネット関連コード用。

1
thrig