Как получить имя хоста из / etc / hostname & DNS domain name?

16

Как я могу получить имя хоста от /etc/hosts? писать hostname? А как насчет доменного имени DNS, как мне это получить? Как я могу получить эти имена через командную строку?

Дада Дуду
источник
Связанный: unix.stackexchange.com/questions/186859/…
Мелебиус

Ответы:

17

Когда вы печатаете

hostname

он покажет вам значение, которое хранится в

/etc/hostname

Смотрите hostname --helpмного вариантов. С помощью ...

-s, --short            short host name
-a, --alias            alias names
-i, --ip-address       addresses for the host name
-I, --all-ip-addresses all addresses for the host
-f, --fqdn, --long     long host name (FQDN)
-A, --all-fqdns        all long host names (FQDNs)
-d, --domain           DNS domain name
-y, --yp, --nis        NIS/YP domain name
-b, --boot             set default hostname if none available
-F, --file             read host name or NIS domain name from given file

Эта команда может получить или установить имя хоста или имя домена NIS. Вы также можете получить домен DNS или полное доменное имя (полное доменное имя). Если вы не используете bind или NIS для поиска узлов, вы можете изменить полное доменное имя (полное доменное имя) и DNS-имя домена (которое является частью полного доменного имени) в файле / etc / hosts.


Так

hostname -f

для длинного имени хоста (FQDN).

Rinzwind
источник
Я получаю: «имя хоста: имя или служба неизвестна»
Дада Дуду
У тебя есть что-нибудь /etc/hostname? Тот, который мы здесь обычно редактируем для apache. Пример темы: askubuntu.com/a/218499/15811
Rinzwind
Я пытался отследить / etc / hosts и получил локальный хост, который мне не нужен, так как я запускаю его на виртуальной
машине
1
@dadadudu localhost- это просто прозвище «я» в сети. Все компьютеры (включая виртуальные машины) могут подключаться к себе по localhostадресу.
Мелебиус
@dadadudu ВМ у меня здесь есть свое имя (оно называется «test1»).
Rinzwind
0

Предполагая, что вы хотите свой локальный (LAN) IPv4-адрес ....

Чтобы ваш сервер не возвращал длинную строку, объединяющую ваши адреса IPv4 и IPv6, используйте это программно в скрипте bash:

LOCALIP=$(hostname -I | awk '{print $1}')

Или введите это в CLI:

hostname -I | awk '{print $1}'
MrPotatoHead
источник
Это работает только в том случае, если хост имеет только один IPv4-адрес. Узлы IPv6 обычно имеют несколько адресов IPv6 (один постоянный и один или несколько временных).
Дэвид Фёрстер
Правильно. Вот почему первая строка моего предложения звучит так: «Предположим, вам нужен ваш локальный (LAN) IPv4-адрес…». Но с вашей точки зрения, «имя хоста» не всегда лучший инструмент для получения информации об IP. Зависит от цели. ОП не был подробно изложен в его / ее вопросе о том, что они хотели (предположительно, полное доменное имя, но это предположение с моей стороны).
MrPotatoHead