在 Linux 中,使用 Bash 终端,我可以执行以下操作:
hostname -d
显示 DNS 域的名称,以及hostname -i
显示主机名的网络地址。
如何从 Mac OS X 中的 Bash 终端检索相同的信息 - 最好使用单个命令(如果需要,可以使用选项),而无需提升权限?
作为参考,这里是我在 Mac OS X 中使用的 Bash 版本:
- GNU bash,版本 3.2.57(1)-release (x86_64-apple-darwin15) 。
答案1
对于hostname -d
,使用hostname -f
:
hostname -f | sed -e 's/^[^.]*\.//'
对于 IP 地址,请使用ifconfig -a
(查找inet
数据)。您的机器可能只有一个网络设备,en0
所以您可以这样做
ifconfig en0 |awk '/inet / {print $2; }'
如果您对所有网络设备感兴趣,请记住ifconfig -l
列出了这些设备。这列出了设备及其对应的地址:
#!/bin/sh
for name in $(ifconfig -l)
do
ifconfig $name |awk -v name=$name '/inet / {printf "%s: %s\n", name, $2; }'
done
进一步阅读:
答案2
我在用
scutil --dns | grep 'search domain' | head -n 1 | grep -o '[a-zA-Z0-9.-]\+$'
这似乎在某些情况下工作得更好,但是 YMMV。我在我的个人资料中将此设置为别名(仅适用于 mac),该dnsdomainname
别名可在 Linux 上使用(代替hostname -d
)。
答案3
ipconfig getifaddr $(route get 8.8.8.8 | awk '/interface: / {print $2; }')
答案4
用“挖”。搜索类似于 whois 的命令
dig 主机名 => 主机名 + ipaddy
dig ip.address => 不完整