ping
é para verificar se um host está ativo ou inativo com base na resposta do ICMP, nunca é a ferramenta certa para resolver apenas o endereço IP, existem ferramentas dedicadas para isso.
Você deve analisar dig
, host
, nslookup
- o que for melhor para você.
Aqui está uma dig
output:
% dig +short google.com
123.108.243.57
123.108.243.51
123.108.243.54
123.108.243.48
123.108.243.60
123.108.243.52
123.108.243.56
123.108.243.55
123.108.243.61
123.108.243.58
123.108.243.49
123.108.243.50
123.108.243.59
123.108.243.47
123.108.243.53
Como observação, no Linux, se você quiser consultar pelo NSSwitch (Name Service Switch), isto é, /etc/nsswitch
, use o comando getent
com o banco de dados hosts
(ou ahosts
), por exemplo:
getent hosts google.com
No meu computador, eu tenho:
hosts: files mdns4 dns
em /etc/nsswitch.conf
, então getent hosts
consultará em sequência e usar gethostbyaddr(3)
ou gethostbyname(3)
com base no nome e ahosts
usará getaddrinfo(3)
.
Em essência, com minha configuração, isso primeiro verificará /etc/hosts
, depois mDNS e, finalmente, DNS.
Se você insistir em usar ping
e sed
, poderá fazer:
% ping -c1 google.com | sed -nE 's/^PING[^(]+\(([^)]+)\).*//p'
123.108.243.56