Unix
使用 Unix shell 從主機名獲取 IP 地址的簡單方法
從主機名獲取 IP 地址的最簡單方法是什麼?
我正在考慮嘗試 a
ping
並從輸出中解析它。但是,這似乎不太好,並且可能不會在所有系統上以相同的方式工作。我四處搜尋並找到了解決方案
nslookup
,但這不適用於/etc/hosts
.
您可以使用標準系統呼叫來做到這一點。這是 Perl 中的一個範例:
use strict; use warnings; use Socket; use Data::Dumper; my @addresses = gethostbyname('google.com'); my @ips = map { inet_ntoa($_) } @addresses[4 .. $#addresses]; print Dumper(\@ips);
產生輸出:
$VAR1 = [ '74.125.127.104', '74.125.127.103', '74.125.127.105', '74.125.127.106', '74.125.127.147', '74.125.127.99' ];
(在命令行上,同樣的腳本可以寫成
perl -MSocket -MData::Dumper -wle'my @addresses = gethostbyname("google.com"); my @ips = map { inet_ntoa($_) } @addresses[4 .. $#addresses]; print Dumper(\@ips)'
:)您可以在其他語言中類似地執行此操作 - 請參閱系統呼叫的手冊頁
man -s3 gethostbyname
等。