1

До сих пор мои сетевые сценарии использовали hostname -i , но после недавнего обновления команда начала выдавать ошибку: hostname: gethostbyname: Unknown host .

Теперь я не знаю ... я должен смотреть на новую команду, как ip? Или это общая проблема? Кажется, я нигде не упоминаю об этом. Я бы использовал ip , но не могу придумать, как отобразить два IP одновременно. Например, когда оба моих интерфейса подключены (eth и wlp).

Какие-либо предложения?

1 ответ1

1

То же самое случилось со мной сегодня. Я проверил / проверил, что файл / usr / bin / hostname в последнее время не изменился.

Я получил вывод данных strace для открытых файлов (исключая "No Such Files" в альтернативных $ PATH):

$ strace hostname -i |& grep open | grep -v "No such file"
open("/usr/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/etc/resolv.conf", O_RDONLY|O_CLOEXEC) = 3
open("/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/etc/host.conf", O_RDONLY|O_CLOEXEC) = 3
open("/etc/hosts", O_RDONLY|O_CLOEXEC)  = 3
open("/usr/lib/libnss_mymachines.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/libresolv.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/libcap.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/librt.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/libnss_resolve.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/libnss_dns.so.2", O_RDONLY|O_CLOEXEC) = 4

Индивидуальная проверка и сравнение с добавочными резервными копиями за последние несколько дней показали, что /etc/nsswitch.conf изменился по сравнению с предыдущей версией по состоянию на 30 сентября 2015 г., 10 декабря 2016 г.

Дифференциальный анализ показывает различия (левая сторона предыдущая и восстановленная, правая сторона последняя и резервная копия):

$ diff -y /etc/nsswitch.conf /etc/nsswitch.conf.bck | grep \|
passwd: files                                                 | passwd: compat mymachines systemd
group: files                                                  | group: compat mymachines systemd
shadow: files                                                 | shadow: compat
hosts: files dns myhostname                                   | hosts: files mymachines resolve [!UNAVAIL=return] dns myhostn

Восстановление предыдущего /etc/nsswitch.conf решает проблему, и «hostname -i» возвращает IP-адреса, данные интерфейсами, как обычно. Вы должны сделать резервную копию последней на всякий случай.

Обновление: после сообщения об ошибке (https://bugs.archlinux.org/task/52133), сопровождающий пакета systemd Дейв Рейснер отметил, что проблема возникает только в том случае, если демон, разрешенный системой, не работает. Я проверил и это правильно. Чтобы новый /etc/nsswitch.conf работал:

systemctl enable systemd-resolved

нужно.

Согласно "верхнему" выводу это добавляет резидентный размер около 4м. Кроме того, можно перейти к предыдущей строке без systemd-resolved.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .