Вопрос или проблема
Я хочу отладить скрипт, который содержит переменные Networkmanager-dispacher, такие как DEVICE_IFACE, IP4_GATEWAY. Руководство Networkmanager описывает эти переменные, но не упоминает, как их отлаживать.
Я много искал, но не могу понять, как получить значение этих переменных. Когда я ввожу в командной строке echo ${DEVICE_IFACE}, я не получаю никакого значения.
В странице руководства NetworkManager
, на которую вы ссылаетесь, сказано:
Среда содержит больше информации об интерфейсе и подключении. Следующие переменные доступны для использования в скриптах диспетчера:
[…]
DEVICE_IFACE
Таким образом, эта среда явно настраивается dispatcher.d и доступна только для скриптов, запущенных оттуда.
Например, вы можете добавить эту строку в файл в /etc/NetworkManager/dispatcher.d
:
echo "interface $DEVICE_IFACE" > /tmp/myscript.log
Согласно странице руководства NetworkManager
, вам нужно сделать так, чтобы файл принадлежал root, был исполняемым и недоступным для записи для группы и других пользователей, например:
# chown root:root /etc/NetworkManager/dispatcher.d/myscript
# chmod a+x /etc/NetworkManager/dispatcher.d/myscript
# chmod go-w /etc/NetworkManager/dispatcher.d/myscript
Затем, перезапустив NetworkManager, вы должны увидеть что-то вроде “interface wlan0” в /tmp/myscript.log
.
Вывод скриптов диспетчера ведется systemd; вы можете просмотреть его с помощью sudo journalctl -u NetworkManager-dispatcher
. Так что просто выводите переменные, а затем смотрите в журнал.
Похожий ответ на похожий вопрос можно найти по адресу https://serverfault.com/a/1056299/310447
Ответ или решение
Как отладить переменные NetworkManager-dispatcher?
Отладка скриптов, использующих переменные NetworkManager-dispatcher, может показаться непростой задачей, особенно если вы не знаете, как получить доступ к этим переменным. В этой статье мы подробно рассмотрим процесс отладки, который поможет вам извлечь переменные, такие как DEVICE_IFACE и IP4_GATEWAY, и корректно настроить ваши dispatcher-скрипты для получения нужной информации.
1. Понимание Dispatcher
Скрипты dispatcher, которые находятся в каталоге /etc/NetworkManager/dispatcher.d
, автоматически вызываются NetworkManager при изменении состояния сетевых подключений. Эти скрипты выполняются с определёнными переменными окружения, которые предоставляют информацию о сети и интерфейсе. Например:
DEVICE_IFACE
— имя сетевого интерфейса.IP4_GATEWAY
— адрес основного шлюза IPv4.
Эти переменные доступны только в контексте запусков dispatcher-скриптов и не могут быть получены в обычной командной строке.
2. Создание и настройка скрипта
Для начала вам нужно создать скрипт, который будет использовать данные переменные. Приведённый ниже пример поможет вам запустить процесс отладки:
-
Создайте новый файл в каталоге
/etc/NetworkManager/dispatcher.d/
:sudo nano /etc/NetworkManager/dispatcher.d/01_debug_network.sh
-
Вставьте следующий код в файл:
#!/bin/bash echo "interface: $DEVICE_IFACE" >> /tmp/network_debug.log echo "IP4 gateway: $IP4_GATEWAY" >> /tmp/network_debug.log
-
Сохраните изменения и закройте редактор.
3. Настройка прав доступа
Чтобы скрипт работал корректно, необходимо установить правильные права доступа:
sudo chown root:root /etc/NetworkManager/dispatcher.d/01_debug_network.sh
sudo chmod 750 /etc/NetworkManager/dispatcher.d/01_debug_network.sh
Это гарантирует, что скрипт будет исполняем, но не будет доступен для записи кем-либо, кроме пользователя root.
4. Перезапуск NetworkManager
Чтобы применить изменения, перезапустите NetworkManager:
sudo systemctl restart NetworkManager
5. Проверка логов
После перезапуска сети попробуйте изменить состояние сетевого интерфейса (например, подключившись или отключившись от сети). Вы можете просмотреть результаты вашей отладки в файле /tmp/network_debug.log
:
cat /tmp/network_debug.log
Также вы можете просмотреть логи Systemd, которые содержат вывод скриптов dispatcher:
sudo journalctl -u NetworkManager-dispatcher
Заключение
Теперь вы знаете, как отлаживать переменные NetworkManager-dispatcher. Правильно настроенный скрипт обеспечит надежное получение нужной информации о сетевых интерфейсах и их настройках. Этот процесс может быть полезен не только для отладки, но и для мониторинга состояния сетевых подключений.
Используйте эти рекомендации, и вы сможете эффективно управлять вашими сетевыми настройками, улучшая производительность и надежность вашей системы.