解決策 1:
これは getent
で簡単に実現できます :
getent hosts 127.0.0.1
getent
nsswitch.conf
で設定されたあらゆるタイプのデータのルックアップを行います .
解決策 2:
動作するツールの 1 つは getent
です .したがって、 getent hosts www.google.com
を使用できます 、または getent hosts localhost
. Name Service Switch 構成 /etc/nsswitch.conf
で指定されているように、データベースからエントリを取得します。 .
より現代的な実装には getent ahosts www.google.com
を使用してください 複数の結果が得られます。
解決策 3:
getent ahosts
を使用 、例:
$ getent ahosts www.google.com | sed -n 's/ *STREAM.*//p'
216.58.210.196
2a00:1450:4006:803::2004
glibc リゾルバーを介してすべての IPv4 および IPv6 アドレスを取得します (したがって、/etc/hosts
を使用します) まず、通常は /etc/nsswitch.conf
で構成されます ).
getent hosts
は使用しないでください これは、IPv6 または IPv4 アドレスのいずれか (両方ではない) を提供し、選択したプロトコルが機能しないものではない可能性があるためです。実際、一般的には IPv6 アドレスが好まれますが、一部の場所では、IPv6 データはルーターによってフィルタリングされます (サポートされていません)。
解決策 4:
次のような gethostbyname() (非推奨) ラッパーを使用できます:
python -c 'import socket;print socket.gethostbyname("www.google.com")'
または、次のような getaddrinfo() ラッパー:
python -c 'import socket;print socket.getaddrinfo("www.google.com","http")[0][4][0]'
getaddrinfo はすべてのインスタンスをリストとして返すことに注意してください。コマンドの最後の部分は、最初のタプルのみを選択します。これは、IPv6 アドレスを返すこともできます。
解決策 5:
resolveip
奇妙なことに、これは RHEL と Ubuntu の mysql-server パッケージの一部です。