Як отримати ім'я хоста разом з доменним іменем?


18

У unix (Solaris) чи є якась команда, яка разом повертає ім'я хоста та доменне ім’я?

Наприклад:

hostname -> servername
domainname -> us.xyz.com

Мені потрібно : servername.us.xyz.com


2
Хто printf "%s" "$(hostname) $(domainname)"не працює?
Jasonwryan

спробуйте скористатись "ім'ям хоста -f", якого вистачить, я сподіваюся, що так
abhishek kumar srivastava

Відповіді:


14

Це спрацює, якщо ваш домен встановлено правильно у резоль.conf. Ви також можете скористатися командою доменне ім'я, яку згадували інші, якщо ваше доменне ім'я NIS збігається з вашим доменом DNS.

echo `uname -n`.`awk '/^domain/ {print $2}' /etc/resolv.conf`

13

Команда

hostname --fqdn (or -f)

може також робити те, що ви хочете чи ні, оскільки в моїй системі я отримую, (none)коли бігаюdomainname


8
Відповідно до hostname(1)розробки сторінки Solaris 10 (для sun4v) та будь-якої старої версії, яку я використовував, --fqdnнедоступна. Він просто намагається встановити ім'я хоста --fqdn. Якщо ви запускаєте його як непідвласниця для безпеки, він говорить: "uname: помилка у встановленні імені: Не власник". Це, очевидно, акція Solaris hostname. Плакат не вказує, чи встановлений набір інструментів GNU.
Олексій

5

Цей мене вже багато років клопоче. Я просто обіймаю це, кажучи

$(hostname).$(domainname)

Ви можете визначити функцію оболонки або псевдонім:

fqdn () {
    echo $(hostname).$(domainname)
}

4
domainnnameнасправді звітує про ваш домен NIS, якщо ви працюєте з NIS. Це не обов'язково те саме, що ваше доменне ім’я DNS.
Магеллан

Ні, це не так. Але оскільки мені вдалося уникнути / уникнути NIS, оскільки це були Yellow Pages, я ніколи цього не знав. :) Так що це є надійний спосіб , щоб отримати ім'я домену , якщо NIS один відрізняється?
Олексій

Ви повинні відчувати себе благословенними, що уникали NIS. Це дратує. І навіть команда Mozilla Thunderbird накрутила це, оскільки вони залежали від виводу "доменного імені" для відповіді за замовчуванням у 2.0. Для фактичного доменного імені я використовуюhostname --fqdn | cut -d. -f2-4
Magellan

1
Це добре працює в Linux. У Solaris принаймні до 10 hostname --fqdn встановлює ім'я хоста на "--fqdn", що, мабуть, є поганою ідеєю (тому переконайтеся, що ви не користуєтеся коренем, якщо спробуєте це). :) Чи --fqdnпідтримується Solaris 11?
Олексій

1
Ой! Мимоволі встановити ім'я хоста було б болем, і ОП сказав Соляріс. Спасибі!
Магеллан

4

чек-ім'я хоста | awk '{print $ NF}'


2
Будь ласка, поясніть трохи для неекспертів.
vonbrand

Synopsis / usr / sbin / check-hostname Опис Сценарій імені check-хоста - це міграційна допомога для sendmail (1М). Цей скрипт намагається визначити повнокваліфіковане ім'я хоста (FQHN) місцевого хоста таким чином, як sendmail (1M). Якщо чекове ім'я хоста здатне визначити FQHN локального хоста, воно повідомляє про успіх. В іншому випадку чек-ім’я хоста повідомляє про те, як перенастроїти систему, щоб FQHN можна було правильно визначити.
ealgumby

/ usr / sbin / check-hostname повідомить про FQDN, якщо він визначений, у системах Solaris. Передача результатів на awk та використання print $ NF просто повідомляє про останнє поле виводу з імені чека-хоста, яке є FQDN. Це найбільш прямий спосіб, який я знаю, щоб отримати цю інформацію з командного рядка, якщо у вас є повноцінне доменне ім’я. Якщо ні, то це не вийде, але я не відчував потреби цього показувати, так як у такому випадку ім'я хоста - це все, що у вас є. Якщо ви не використовуєте Solaris, це також не працюватиме, але запит було спрямовано на Solaris.
ealgumby

Серйозно, я не розумію, як це не відповідає на питання, яке було: "У unix (Solaris) чи є якась команда, яка разом повертає ім'я хоста та домен?" Відповідь "так" є, і ця команда: check-hostname | awk '{print $ NF}'
ealgumby

3
Справжня відповідь - у ваших коментарях. Надання однорядкової команди з невеликим (або у вашому випадку жодним) поясненням - це не такий варіант відповіді, про який йдеться на цьому веб-сайті.
rahmu

2

Я знаю, що це старіший потік, але у мене виникло потреба окремо витягувати ім'я хоста та доменне ім'я у сценарії.

Відповідь ealgumby на використання чека-хоста було тим, чого я ніколи не бачив, тому я спробував це з великим успіхом для моїх потреб. Я б відзначив це корисним, але, мабуть, у мене немає представника для цього.

Я встановлюю домен наступним циклом через висновок з імені check-host.

domain=`check-hostname | nawk -F\. '{for(i=2; i<NF;i++){printf $i"."}printf $NF"\n"}'`
fqdn=`hostname`'.'${domain}

1

Я ве зробив трохи обхідний шлях для hostnameі host:

$ host $(hostname -i) | awk '{print $NF }'

(Я використовую Centos, але це має працювати в іншому місці)

Отримання домену без останньої крапки:

$ host $(hostname -i) | awk '{print substr($NF, 1, length($NF)-1)}'

на моєму ubuntu hostname -iроздрукуйте IP-адресу, що відповідає імені хоста.
Архемар

Так, це правильно, тому я передаю цей IP в host команду. Ви отримаєте щось подібне: YOUR_IP.in-addr.arpa domain name pointer hostname.domainname. з awk я отримую останню колонку, яка єhostname.domainname
user1314742

Я бачу, на жаль, використовуючи host $(hostname -i)дати мені список 8
імен

ви впевнені, що у вас немає псевдонімів для hostкоманди? видається, що у вашої команди hostє псевдонімhost -a
user1314742

0

У Solaris це добре працювало для мене: вибачте за зворотний вибір, це зворотна цитата поруч із номером 1 на клавіатурі qwerty або ви можете використовувати $ (команду) в KSH

getent hosts (backtick) /usr/bin/hostname (backtick)

або

getent hosts $(/usr/bin/hostname)

приклад:

root@melauto:[/]# getent hosts $(/usr/bin/hostname)

10.4.19.241     melauto.sro.vic.gov.au melauto loghost
root@melauto:[/]# 

getent запитує механізм пошуку поточного імені, як зазначено в /etc/nsswitch.conf, і повертає інформацію, яка відповідає пошуку, тут він повертає інформацію, як знайдено в /etc/hosts. якщо ви шукаєте інформацію про хоста для іншого хоста, який не знаходиться /etc/hosts, він буде шукати в DNS за умови, що це визначено в/etc/nsswitch.conf


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.