Выполнение команды «host -v hostname» для CentOS 7

Вы правы в своих предположениях.

Более подробная документация скрыта в info bash :

3.5.3 Расширение параметров оболочки

[...]

Основная форма расширения параметра - $ {ПАРАМЕТР} . Подставляется значение ПАРАМЕТР . ПАРАМЕТР - это параметр оболочки, описанный выше (* обратите внимание на параметры оболочки: :) или ссылку на массив (* обратите внимание на массивы: :). Фигурные скобки необходимы, когда ПАРАМЕТР является позиционным параметром с более чем одной цифрой или когда за ПАРАМЕТР следует символ , который не должен интерпретироваться как часть его названия.

Если первый символ ПАРАМЕТРА является восклицательным знаком (! ), а ПАРАМЕТР не является NAMEREF, он вводит уровень косвенного обращения к переменной .Bash использует значение переменной, образованное из остатка из ПАРАМЕТРА , в качестве имени переменной; затем эта переменная раскрывается , и это значение используется в остальной части подстановки, а не значение самого ПАРАМЕТРА . Это известно как «непрямое расширение». Если ПАРАМЕТР является ссылкой на имя, это расширяется до имени переменной , на которую ссылается ПАРАМЕТР , вместо выполнения полного косвенного расширение. Исключением являются расширения $ {! PREFIX *} и $ {! NAME [@]} , описанные ниже. Восклицательный знак должен стоять сразу после левой фигурной скобки , чтобы ввести косвенное обращение.

1
01.07.2017, 23:27
1 ответ

Поскольку утилита hostвыполняет поиск DNS, она не использует /etc/hosts. Это означает, что для успеха хост должен находиться где-то на DNS-сервере.
Поскольку вопрос здесь, я предполагаю, что добавление этой DNS-записи на ваш DNS-сервер (тот, что по адресу 192.168.101.2) не вариант.К счастью, вы можете довольно легко решить эту проблему, поскольку используете NetworkManager (как указано в строке комментария в вашем /etc/resolv.conf).

Решение состоит в том, чтобы включить и настроить dnsmasq. dnsmasq — это сервер пересылки DNS, работающий на локальном хосте. Он может выполнять простые задачи, такие как рекурсивный поиск и кэширование результатов. Он также может выполнять такие действия, как обслуживание записей из /etc/hosts. NetworkManager имеет встроенную функциональность для управления dnsmasq. Поэтому использовать его очень просто.

Конфигурация

Часть конфигурации заключается в том, чтобы указать dnsmasq обслуживать записи из /etc/hosts, поскольку конфигурация по умолчанию, которую NetworkManager использует для dnsmasq, не включает эту функцию.

Создайте файл /etc/NetworkManager/dnsmasq.d/hosts.confсо следующим содержимым:

addn-hosts=/etc/hosts

Включение

Включение выполняется добавлением dns = dnsmasqв раздел [main]файла /etc/NetworkManager/NetworkManager.conf. Например:

[main]
dns = dnsmasq

После этого перезапустите NetworkManager (через systemctl перезапустите NetworkManager.service).

Использование

Теперь вы должны заметить, что /etc/resolv.confсодержит только одну запись nameserver, указывающую на 127.0.0.1. Любые инструменты, которые обращаются к /etc/resolv.confдля поиска серверов имен, теперь должны в конечном итоге обращаться к dnsmasq и получать записи, найденные в /etc/hosts.Если запись не существует в /etc/hosts, поиск будет переадресован на вышестоящий DNS-сервер (192.168.101.2).

2
27.01.2020, 23:33

Теги

Похожие вопросы