Как сбросить настройки DNS по умолчанию после изменения с помощью systemd -resolve?

Вам не хватает того, что вы открываете (и усекаете )файл fтолько один раз в вызове exec. Две команды echoпросто пишут в уже открытый файловый дескриптор. Таким образом, файл fне будет усечен ни одним из вызовов echo.

Для перенаправления стандартного вывода на файловый дескриптор используется следующий синтаксис >&nгде n— небольшое положительное целое число, обозначающее файловый дескриптор (нет >>&nперенаправления ). Чтобы это работало, дескриптор файла уже должен быть связан с открытым файлом. Это действие по открытию файла и связывание его с дескриптором с exec 3>f, который усекает файл(exec 3>>fне усекает файл и открывает его в режиме добавления -). Просто запись с помощью >&3не открывает файл и не обрезает его.

Все было бы иначе, если бы ты

echo foo >f
echo bar >f
cat f

(каждый echoоткрывает и усекаетf)или, более запутанный,

exec 3>f; echo foo >&3
exec 3>f; echo bar >&3
exec 3>&- # close fd 3
cat f

(файл открывается и усекается execперед каждымecho).

0
19.01.2021, 18:48
1 ответ

Не думали ли вы о том, чтобы создать -файл resolve.conf по умолчанию и настроить сценарий для записи этого файла resolve.conf по умолчанию -в resolve.conf всякий раз, когда вы захотите сбросить его.

Затем вы можете создать скрипт 'resetdns', который запускается только :cp и т. д./по умолчанию -resolve.conf и т. д./resolve.conf

Вероятно, его нужно будет запускать с помощью sudo, но это должно решить вашу проблему.

Кроме того, на главной странице systemd -resolve (https://wiki.archlinux.org/index.php/Systemd-resolved)есть интересная информация. Вы можете добавить статус resolvectl в конец скрипта 'resetdns', чтобы убедиться, что он был сброшен.

1
18.03.2021, 22:36

Теги

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