Не printf "%s" "$(hostname) $(domainname)"работает?
Джейсонвриан
попробуйте использовать "hostname -f", этого будет достаточно, я надеюсь на это
abhishek kumar srivastava
Ответы:
14
Это будет работать, если ваш домен установлен правильно в resolv.conf. Вы также можете использовать команду domainname, упомянутую другими, если ваше имя домена NIS совпадает с вашим доменом DNS.
Согласно man-странице для hostname(1)Solaris 10 (на sun4v) и каждой старой версии, которую я использовал, --fqdnона недоступна. Он просто пытается установить имя хоста в --fqdn. Если вы запускаете его как не-суперпользователь для безопасности, он говорит «uname: ошибка в имени параметра: не владелец». Это явно сток солярис hostname. На плакате не указано, установлен ли на них набор инструментов GNU.
Алексиос
5
Этот тоже давал мне покоя годами. Я просто работаю над этим, говоря
$(hostname).$(domainname)
Вы можете определить функцию оболочки или псевдоним:
domainnnameна самом деле сообщает ваш домен NIS, если вы используете NIS. Это не обязательно совпадает с вашим доменным именем DNS.
Магеллан
Нет, это не так. Но так как мне удалось избежать / избежать NIS, так как это были Желтые страницы, я никогда не знал этого. :) Так есть ли надежный способ получить доменное имя, если NIS отличается?
Алексиос
Вы должны чувствовать благословение, что вы избежали НИС. Это раздражает. И даже команда Mozilla Thunderbird это испортила, так как они зависели от вывода 'domainname' для ответа по умолчанию в 2.0. Для фактического доменного имени я используюhostname --fqdn | cut -d. -f2-4
Magellan
1
Это хорошо работает на Linux. В Solaris , по крайней мере до 10, hostname --fqdnустанавливает имя хоста в «--fqdn», который, вероятно , плохая идея (поэтому убедитесь , что вы не корень , если вы попробуете его). :) --fqdnПоддерживается на Solaris 11?
Алексиос
1
Ой! Непреднамеренная установка имени хоста была бы проблемой, и ОП сказал Solaris. Благодарность!
Синтаксис / usr / sbin / check-hostname Описание Сценарий check-hostname является средством миграции для sendmail (1M). Этот сценарий пытается определить полное имя хоста (FQHN) локального хоста способом, аналогичным sendmail (1M). Если check-hostname может определить FQHN локального хоста, он сообщает об успехе. В противном случае check-hostname сообщает, как перенастроить систему, чтобы можно было правильно определить FQHN.
Ealgumby
/ usr / sbin / check-hostname сообщит полное доменное имя, если оно определено, в системах Solaris. Передача вывода в awk и использование print $ NF просто сообщает о последнем поле вывода из check-hostname, которое является полным доменным именем. Это самый прямой из известных мне способов получения этой информации из командной строки, при условии, что у вас есть полное доменное имя. Если нет, то это не будет работать, но я не чувствовал необходимости показывать это, так как в этом случае имя хоста - это все, что у вас есть. Если вы не используете Solaris, это также не будет работать, но запрос был направлен на Solaris.
Ealgumby
Серьезно, я не понимаю, как это не отвечает на вопрос, который был: «В Unix (Solaris) есть какая-нибудь команда, которая возвращает имя хоста и имя домена вместе?» Ответ "да" есть, и эта команда: check-hostname | awk '{print $ NF}'
ealgumby
3
Реальный ответ в ваших комментариях. Давать однострочную команду с небольшим (или, в вашем случае, без) объяснением - не тот ответ, о котором говорит этот сайт.
Рахму
2
Я знаю, что это старая ветка, но мне нужно было извлекать имя хоста и имя домена отдельно в сценарии.
Ответ ealgumby на использование check-hostname был чем-то, чего я никогда раньше не видел, поэтому я попытался добиться большого успеха для своих нужд. Я бы отметил это как полезное, но, очевидно, у меня нет представителя, чтобы сделать это.
Я установил домен следующим образом, просматривая вывод check-hostname.
на моем Ubuntu hostname -iвыведите IP-адрес, соответствующий имени хоста.
Архемар
Да, верно, поэтому я передаю этот IP в host команду. Это даст вам что-то вроде этого: YOUR_IP.in-addr.arpa domain name pointer hostname.domainname. с помощью awk я получу последний столбец, которыйhostname.domainname
user1314742
Я вижу, что, к сожалению, используя, я получаю host $(hostname -i)список из 8 имен хостов, все с тем же IP, и без имени хоста, соответствующего моим хостам
Archemar
Вы уверены, что у вас нет псевдонимов для hostкоманды? кажется, что ваша команда hostимеет псевдоним дляhost -a
user1314742
0
На Солярисе это работало хорошо для меня: извините за обратный удар, это обратная кавычка рядом с номером 1 на клавиатуре qwerty или вы можете использовать $ (команду) в KSH
getent запрашивает текущий механизм поиска имени, как указано в /etc/nsswitch.conf, и возвращает информацию, соответствующую поиску, здесь она возвращает информацию, найденную в /etc/hosts. если вы ищите информацию о хосте для другого хоста, который не находится внутри /etc/hosts, он будет искать в DNS при условии, что это определено в/etc/nsswitch.conf
printf "%s" "$(hostname) $(domainname)"
работает?Ответы:
Это будет работать, если ваш домен установлен правильно в resolv.conf. Вы также можете использовать команду domainname, упомянутую другими, если ваше имя домена NIS совпадает с вашим доменом DNS.
источник
Команда
может также делать то, что вы хотите или нет, так как в моей системе я получаю
(none)
при запускеdomainname
источник
hostname(1)
Solaris 10 (на sun4v) и каждой старой версии, которую я использовал,--fqdn
она недоступна. Он просто пытается установить имя хоста в--fqdn
. Если вы запускаете его как не-суперпользователь для безопасности, он говорит «uname: ошибка в имени параметра: не владелец». Это явно сток солярисhostname
. На плакате не указано, установлен ли на них набор инструментов GNU.Этот тоже давал мне покоя годами. Я просто работаю над этим, говоря
Вы можете определить функцию оболочки или псевдоним:
источник
domainnname
на самом деле сообщает ваш домен NIS, если вы используете NIS. Это не обязательно совпадает с вашим доменным именем DNS.hostname --fqdn | cut -d. -f2-4
hostname --fqdn
устанавливает имя хоста в «--fqdn», который, вероятно , плохая идея (поэтому убедитесь , что вы не корень , если вы попробуете его). :)--fqdn
Поддерживается на Solaris 11?проверить имя хоста | awk '{print $ NF}'
источник
Я знаю, что это старая ветка, но мне нужно было извлекать имя хоста и имя домена отдельно в сценарии.
Ответ ealgumby на использование check-hostname был чем-то, чего я никогда раньше не видел, поэтому я попытался добиться большого успеха для своих нужд. Я бы отметил это как полезное, но, очевидно, у меня нет представителя, чтобы сделать это.
Я установил домен следующим образом, просматривая вывод check-hostname.
источник
Я ве сделал немного обходной путь для
hostname
иhost
:(Я использую Centos, но он должен работать в другом месте)
Получение домена без конечной точки:
источник
hostname -i
выведите IP-адрес, соответствующий имени хоста.host
команду. Это даст вам что-то вроде этого:YOUR_IP.in-addr.arpa domain name pointer hostname.domainname.
с помощью awk я получу последний столбец, которыйhostname.domainname
host $(hostname -i)
список из 8 имен хостов, все с тем же IP, и без имени хоста, соответствующего моим хостамhost
команды? кажется, что ваша командаhost
имеет псевдоним дляhost -a
На Солярисе это работало хорошо для меня: извините за обратный удар, это обратная кавычка рядом с номером 1 на клавиатуре qwerty или вы можете использовать $ (команду) в KSH
или
пример:
getent запрашивает текущий механизм поиска имени, как указано в /etc/nsswitch.conf, и возвращает информацию, соответствующую поиску, здесь она возвращает информацию, найденную в
/etc/hosts
. если вы ищите информацию о хосте для другого хоста, который не находится внутри/etc/hosts
, он будет искать в DNS при условии, что это определено в/etc/nsswitch.conf
источник
В сценарии Unix bash в Sun Solaris 10 я просто отображал имя своего хоста следующим образом:
echo "Мое имя хоста - $ (имя хоста)"
источник