我在
shell中,我想知道主机名的相应IP地址.
我知道我可以通过Perl,PHP,Python或许多其他脚本语言(甚至可能是awk!)得到它,这将是我的解决方法,但我很惊讶似乎没有命令行工具来做到这一点,getaddrinfo()没有简单的包装.
我错了吗?有吗?主机和getent不计算,我想要一些使用libc的东西,并根据/etc/nsswitch.conf行事,以及默认安装在任何(linux)系统上的东西.
从https://superuser.com/questions/681612/is-there-a-standard-command-line-tool-to-do-a-hostname-lookup回答:getent hosts实际上确实做了我想要的,而不仅仅是/ etc / hosts查找.
最佳答案 你可以使用dig命令:
$dig stackoverflow.com
; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> stackoverflow.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45432
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;stackoverflow.com. IN A
;; ANSWER SECTION:
stackoverflow.com. 197 IN A 198.252.206.16
;; Query time: 26 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Nov 26 09:28:10 2013
;; MSG SIZE rcvd: 51
如你所见,只有一条线没有;在开始时,可以通过构建管道来grep它并获取IP地址:
$dig stackoverflow.com | grep -e "^[^;]" | tr -s " \t" " " | cut -d" " -f5
198.252.206.16