В чем разница между resolvconf, systemd -resolve и avahi?

Использовать ссылку на имя . Они работают как указатели на другие переменные (в Bash 4.3 и более поздних версиях ):

.

Var1Value=A
Var2Value=B
Var3Value=C
Var4Value=""

for (( i=1 ; ; i++ )); do
    n="Var${i}Value"                # the name of var
    declare -n p="$n"               # reference to the var
    [ "${p+x}" ] || break           # see if it exists
    echo "$n: '$p'"
done

"${p+x}"оценивается как x, если переменная, на которую указывает p, существует, так что это относится и к установленным, но пустым переменным.

В качестве альтернативы используйте косвенное расширение переменной ${!n}, которое ссылается на переменную, названную n.

for (( i=1 ; ; i++ )); do
    n="Var${i}Value"                # the name of var
    [ "${!n+x}" ] || break          # see if it exists
    echo "$n: '${!n}'"
done

Но на самом деле вам следует использовать массив. Ни один из трех вариантов здесь не является стандартным, но массивы, безусловно, являются наиболее логичными.

VarValue=( A B C )

for value in "${VarValue[@]}"; do
    # use "$value" here
    printf 'Value is "%s"\n' "$value"
done

См. также:

1
03.07.2020, 05:19
1 ответ

Когда вы запускаете такую ​​команду, как ping foobar, система должна решить, как преобразовать foobarв IP-адрес.

Обычно первое место, которое он ищет, это /etc/nsswitch.conf.

Здесь может быть такая строка, как:

hosts:          files dns mdns4

Это указывает подпрограмме поиска сначала искать в «файлах», то есть /etc/hosts. Если это не находит совпадения, он попытается выполнить поиск DNS. И если мы все еще не знаем ответа, он попытается выполнить поиск mDNS.

Поиск DNS — это место, где система затем ищет /etc/resolv.conf. Это говорит ему, на какие DNS-серверы смотреть. На моих машинах это авто -настроено DHCP.

% cat /etc/resolv.conf 
# Generated by NetworkManager
search mydomain
nameserver 10.0.0.1
nameserver 10.0.0.10

Способ сборкиresolv.confможет меняться в зависимости от операционной системы, имеющихся у вас дополнительных компонентов, других записей конфигурации, последовательности загрузки... В вашем случае в Ubuntu вы запускаете программы systemd, которые настраивают это файл, чтобы указать на ваши локальные systemd-resolvedи , которые будут знать, как общаться с реальными DNS-серверами.

На моих основных серверах со статическими IP-адресами и без systemd-resolvedя редактирую этот файл вручную.

Наконец, mdns4сообщает подпрограммам, что нужно попытаться спросить avahi-daemon, знает ли она имя.

Вы можете изменить правила. например, если /etc/nsswitch.confтолько что сказал:

hosts: files

затем только используется локальный /etc/hostsфайл.

Возможны другие записи; например, ldapзаставит его искать LDAP.

8
18.03.2021, 23:22

Теги

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