Как отладить переменные networkmanager-dispatcher

Вопрос или проблема

Я хочу отладить скрипт, который содержит переменные 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. Создание и настройка скрипта

Для начала вам нужно создать скрипт, который будет использовать данные переменные. Приведённый ниже пример поможет вам запустить процесс отладки:

  1. Создайте новый файл в каталоге /etc/NetworkManager/dispatcher.d/:

    sudo nano /etc/NetworkManager/dispatcher.d/01_debug_network.sh
  2. Вставьте следующий код в файл:

    #!/bin/bash
    
    echo "interface: $DEVICE_IFACE" >> /tmp/network_debug.log
    echo "IP4 gateway: $IP4_GATEWAY" >> /tmp/network_debug.log
  3. Сохраните изменения и закройте редактор.

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. Правильно настроенный скрипт обеспечит надежное получение нужной информации о сетевых интерфейсах и их настройках. Этот процесс может быть полезен не только для отладки, но и для мониторинга состояния сетевых подключений.

Используйте эти рекомендации, и вы сможете эффективно управлять вашими сетевыми настройками, улучшая производительность и надежность вашей системы.

Оцените материал
Добавить комментарий

Капча загружается...