Я запускаю RHEL 5.7 і hostnameкоманда дає мені правильне ім'я хоста.
Але hostname -sі hostname -fповернення : Unknown host. Чому?
/etc/hostname?
hostname -fвикористовує DNS, у вас є зворотний запис DNS для вашого IP?
Я запускаю RHEL 5.7 і hostnameкоманда дає мені правильне ім'я хоста.
Але hostname -sі hostname -fповернення : Unknown host. Чому?
/etc/hostname?
hostname -fвикористовує DNS, у вас є зворотний запис DNS для вашого IP?
Відповіді:
(скопійовано з однієї з моїх відповідей на SF )
hostnameКоманда повертає результати від DNS і /etc/hosts.
hostnameє еквівалентним uname -nі є фактичним "ім'ям хоста" або "ім'ям вузла" поля.
Усі інші hostnameаргументи використовують це ім’я вузла для пошуку інформації.
Отже, перш ніж йти далі, я повинен пояснити /etc/hostsформат файлу.
Перше поле є досить очевидним, його IP-адреса повинна вирішувати всі імена хостів у рядку. Друге поле - це основне ім'я хоста для цього IP. Решта полів - псевдоніми.
Тож якщо ви запустите hostname -f, спершу спробуйте вирішити IP для вашого імені. Залежно від способу hosts:налаштування запису в /etc/nsswitch.confцьому методі буде відрізнятися.
/etc/resolv.confпоки не поверне IP-адресу від DNS. /etc/hostsзнайде рядок, де основне ім’я хоста або псевдонім - це ваше поточне ім’я вузла ( uname -n), а потім поверне IP-адресу в цьому рядку. Після того, як він отримає IP, він спробує зворотний пошук на цьому IP. Знову він використовуватиме DNS для цього та файл хостів на основі вашого nsswitch.conf. У разі використання файлу хосту він поверне первинний запис (який є першим полем після IP-адреси у файлі).
hostname -aпрацюватиме лише з файлом хостів, оскільки пошук зворотного пошуку в DNS дає лише 1 результат. За допомогою файлу hosts він повертає аліси у відповідний рядок (це все після першого запису, основне ім'я хоста).
Отже, коротше кажучи, ймовірною причиною вашої проблеми є те, що у вас немає запису, /etc/hostsякий містить ваше ім’я хоста ( uname -n).
Приклади
Якщо ваше ім’я вузла "foobar", і ви маєте такий запис /etc/hosts:
127.0.0.1 foobar.example.com foobar localhost.localdomain localhost
Тоді ви отримаєте такі результати команд:
# hostname
foobar
# uname -n
foobar
# hostname -f
foobar.example.com
# hostname -a
foobar localhost.localdomain localhost