Я провел тестирование hostname
на нескольких серверах (RedHat, Ubuntu) и hostname -f
доказал свою ненадежность, возвращая иногда только короткое имя (как описано в этом вопросе ).
Я могу видеть fqn в псевдонимах: hostname -a
(один из псевдонимов - fqn, который я ищу), но порядок псевдонимов не является фиксированным.
Есть ли другой способ надежно получить полное имя и сохранить его в переменной bash?
Ответы:
Я попробовал это на CentOS5:
host -TtA $SERVERNAME|grep "has address"|awk '{print $1}'
Я должен запросить свой DNS в режиме TCP. Если UDP работает в вашей среде, пропустите опцию "T".
Примечание: на гостевой Ubuntu (VirtualBox) это не будет работать:
Итак, чтобы охватить все случаи:
источник
host -TtA $(hostname -s)|grep "has address"|awk '{print $1}'
работать на своих серверахВот один способ, которым я нашел fqn:
Другими словами, у меня был
nslookup
IP-адрес, который дает мне что-то вроде:Оттуда, это был просто вопрос удаления того, чего я не хотел, с помощью манипуляций с bash .
Может быть, есть более простой способ?
источник
Ваш метод работает, только если вы правильно настроили ваше имя хоста, и у вас есть правильные настройки DNS и т. Д. Если у вас есть все это, то вы уже знаете свой fqdn.
Не существует надежного способа получить fqdn. Один IP-адрес может иметь несколько fqdn, а один fqdn может иметь несколько IP-адресов ... и многие IP-адреса вообще не имеют fqdn.
Если ваша машина напрямую подключена к Интернету, просто используйте IP-адрес и сделайте обратный DNS-запрос:
host 1.2.3.4
но это очень часто не дает желаемого ответа (попробуйте, например, с Google).
источник
host
чтобы получить только A-запись (или сделать соответствующий поиск).У тебя не
hostname --fqdn
работает?источник
hostname --fqdn
возвращает короткое имя с fqdn, определенным как один из псевдонимов имени хоста.-f
и--fqdn
это одно и то же.В Ubuntu вы можете сделать
hostname -A
источник
Для кроссплатформенной альтернативы, если вы не возражаете против использования Python (работает по крайней мере на Python 2.7 и Python 3)
источник
Безопасный для bash метод OS X, который, вероятно , не будет работать с другими разновидностями * nix из-за различий в выводе команды:
Python, вероятно, ваш лучший выбор для широкой совместимости.
источник