
В Linux, используя Bash Terminal, я могу сделать следующее:
hostname -d
для отображения имени домена DNS иhostname -i
для отображения сетевого адреса(ов) имени хоста.
Как можно получить ту же информацию — желательно с помощью одной команды (с опциями, если необходимо) и без повышения привилегий — из терминала Bash в Mac OS X?
Для справки, вот версия Bash, которую я использую в Mac OS X:
- GNU bash, версия 3.2.57(1)-релиз (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
Используйте 'dig'. Поиск команд, похожих на whois
имя хоста dig => оба имени хоста + ipaddy
dig ip.address => не такой полный