Команда linux -name -f не працює на RHEL


13

Я запускаю RHEL 5.7 і hostnameкоманда дає мені правильне ім'я хоста.
Але hostname -sі hostname -fповернення : Unknown host. Чому?


Який дистрибутив? У моїй системі Ubuntu 12.04 всі 3 працюють.
Антон

Яку операційну систему ви використовуєте? Якщо Linux, то який дистрибутив? Який вміст /etc/hostname?
terdon

1
hostname -fвикористовує DNS, у вас є зворотний запис DNS для вашого IP?
Бармар

@terdon Я використовую RHEL5 (червоний капелюх Linux linux-сервер випуску 5.7 (tikanga)) і такого файлу немає (/ etc / hostname)
повтор

@Barmar У мене не налаштовано dns на своєму хості. Я додав ip-адресу та fqdn у свій файл хостів (/ etc / hosts), ця помилка є результатом того, що dns не налаштовується?
повтор

Відповіді:


21

(скопійовано з однієї з моїх відповідей на SF )

hostnameКоманда повертає результати від DNS і /etc/hosts.

hostnameє еквівалентним uname -nі є фактичним "ім'ям хоста" або "ім'ям вузла" поля.
Усі інші hostnameаргументи використовують це ім’я вузла для пошуку інформації.

Отже, перш ніж йти далі, я повинен пояснити /etc/hostsформат файлу.
Перше поле є досить очевидним, його IP-адреса повинна вирішувати всі імена хостів у рядку. Друге поле - це основне ім'я хоста для цього IP. Решта полів - псевдоніми.

Тож якщо ви запустите hostname -f, спершу спробуйте вирішити IP для вашого імені. Залежно від способу hosts:налаштування запису в /etc/nsswitch.confцьому методі буде відрізнятися.

  • Якщо у вас налаштовано використовувати dns, він використовуватиме налаштовані домени пошуку, /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

Це пояснення того, як він отримує цінність, чудове! У мене був FQDN наприкінці рядка 127.0.0.1, який був основним ім'ям хоста localhost. Я просто видалив їх і залишив FQDN тільки в рядку, в якому є справжній IP, і він вирішив мою проблему імені хоста -f повернення localhost.
qwertzguy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.