ホスト名と16進IPアドレスを切り替えたいです。私はそれをインストールし、syslinux-utils
それDebian Stretch
を提供しますgethostip
:
gethostip -x google.com
D83ACD2E
D83ACD2E
ホスト名に戻すにはどうすればよいですか?
以前のバージョンの Debian では、Wheezy
次のコマンドを使用できました。getaddrinfo' and 'getnameinfo
# getaddrinfo google.com
D83ACD4E
# getnameinfo D83ACD4E
mil04s25-in-f14.1e100.net
このツールは見つかりませんDebian Stretch
。これらのツールは他のツールに置き換えられましたか?
ベストアンサー1
D83ACD2E
16進数に変換して(ネットワークバイト順!)32ビット整数に圧縮し、その整数の(符号なし!)文字コンポーネントをドットで連結して印刷できます。 (詳細があれば可能です。組み立て.)
$ perl -e 'printf "%v*d\n", ".", pack "N", hex shift' D83ACD2E
216.58.205.46
$
複雑さの少ない10進フラグはgethostip
値を直接提供するかhost
、nslookup
getent hosts
$ gethostip -d google.com
172.217.3.206
$ host `gethostip -d google.com`
206.3.217.172.in-addr.arpa domain name pointer sea15s12-in-f206.1e100.net.
206.3.217.172.in-addr.arpa domain name pointer sea15s12-in-f14.1e100.net.
$ getent hosts `gethostip -d google.com`
172.217.3.206 sea15s12-in-f206.1e100.net
$
これは、特定のIPアドレスに関連付けられているDNS PTRレコードであり、設定されていない、設定されていない、または探しているホスト名である場合とそうでない場合があります。
または、あちこちで検索してみるとapt-file
$ sudo apt-file search getaddrinfo | grep 'getaddrinfo$'
gnulib: /usr/share/gnulib/modules/getaddrinfo
libruli-bin: /usr/bin/ruli-getaddrinfo
libsocket-getaddrinfo-perl: /usr/bin/socket_getaddrinfo
$ sudo apt-file search getnameinfo | grep 'getnameinfo$'
libsocket-getaddrinfo-perl: /usr/bin/socket_getnameinfo
$ sudo apt-get install libsocket-getaddrinfo-perl
...
しかし、そのバージョンはあなたのシンボルをサポートしていないようです。
$ socket_getnameinfo D83ACD4E
Unrecognised address or port format - Name or service not known
$
0x
ただし、通常の16進プレフィックスを使用する場合
$ socket_getnameinfo 0xD83ACD4E
Resolved address '0xD83ACD4E'
mil04s25-in-f78.1e100.net
$
(マンページによると、Debianはプログラムの名前を変更しましたが、今はLeoNerdが先日IRCで言及したことを覚えています...)
これを受け入れることに固執する場合は、D83ACD4E
上記の方法を使用してhex
値をデジタル化してパッキングし、モジュールSocket
機能を使用して盲目的に処理できます。ただし、実際にはエラーチェック、入力検証、テストなどのスクリプトである必要があります。など
$ perl -MSocket=:addrinfo,pack_sockaddr_in \
-E '($e,$h)=getnameinfo pack_sockaddr_in(0, pack("N", hex shift));' \
-E 'say $h' D83ACD2E
mil04s24-in-f46.1e100.net
$