Перейти к содержанию

Вопрос

Опубликовано (изменено)

Изменилось поведение переменной $change в триггере ifstatechanged.d при установке коннекта. Раньше (3.9.1) значение было link, сейчас - connected. Это теперь норма?

Opkg::Manager: /opt/etc/ndm/ifstatechanged.d/000-unblock-vpn.sh: Wireguard2-link-no-up-up.
Opkg::Manager: /opt/etc/ndm/ifstatechanged.d/000-unblock-vpn.sh: Wireguard2-connected-yes-up-up. 
Изменено пользователем avn

Рекомендуемые сообщения

  • 0
Опубликовано (изменено)

Триггеры выполняются по два раза. Из параметров запуска триггера непонятно какое состояние изменилось. В примере, нижние две строки - одинаковые. Почему триггер вызвался два раза, что изменилось?

Opkg::Manager: /opt/etc/ndm/ifstatechanged.d/00-ifstatechanged.sh: Run ifstatechanged.d\id=Wireguard1,system_name=nwg1,link=up,connected=yes,up=down,change=up.
Opkg::Manager: /opt/etc/ndm/ifstatechanged.d/00-ifstatechanged.sh: Run ifstatechanged.d\id=Wireguard1,system_name=nwg1,link=down,connected=no,up=down,change=connected.
Opkg::Manager: /opt/etc/ndm/ifstatechanged.d/00-ifstatechanged.sh: Run ifstatechanged.d\id=Wireguard1,system_name=nwg1,link=down,connected=no,up=down,change=link.
Opkg::Manager: /opt/etc/ndm/ifstatechanged.d/00-ifstatechanged.sh: Run ifstatechanged.d\id=Wireguard1,system_name=nwg1,link=down,connected=no,up=down,change=config.

Opkg::Manager: /opt/etc/ndm/ifstatechanged.d/00-ifstatechanged.sh: Run ifstatechanged.d\id=Wireguard1,system_name=nwg1,link=down,connected=no,up=up,change=up.
Opkg::Manager: /opt/etc/ndm/ifstatechanged.d/00-ifstatechanged.sh: Run ifstatechanged.d\id=Wireguard1,system_name=nwg1,link=down,connected=no,up=up,change=config.
Opkg::Manager: /opt/etc/ndm/ifstatechanged.d/00-ifstatechanged.sh: Run ifstatechanged.d\id=Wireguard1,system_name=nwg1,link=up,connected=no,up=up,change=link.
Opkg::Manager: /opt/etc/ndm/ifstatechanged.d/00-ifstatechanged.sh: Run ifstatechanged.d\id=Wireguard1,system_name=nwg1,link=up,connected=yes,up=up,change=connected.
Opkg::Manager: /opt/etc/ndm/ifstatechanged.d/00-ifstatechanged.sh: Run ifstatechanged.d\id=Wireguard1,system_name=nwg1,link=up,connected=yes,up=up,change=connected.

 

Изменено пользователем avn
  • 0
Опубликовано (изменено)

Добрый день. Проблема актуальна на stable прошивке 4.1.7, а также при изменении состояния подключения всегда $connected "no", хотя должен быть "yes".

При изменении состояния Wireguard подключения и строчке logger 

Unblock_VPN: $id changed: sourse of changes: $change; state: $up; link status: $link; connection status: $connected

в скрипте в каталоге /opt/etc/ndm/ifstatechanged.d/ всегда получается одинаковый результат

Unblock_VPN: Wireguard0 changed: sourse of changes: link; state: up; link status: up; connection status: no
Изменено пользователем komatera
  • 0
Опубликовано

Состояния интерфейсов внутри системы начиная с версии 4.0 были переработаны. В частности, это выражается в наблюдаемом поведении.

Слой "link" находится на более низком уровне, и событие о его переходе в "up" приходит раньше, чем успевает поменяться состояние "connected". Подправьте скрипт, чтобы он реагировал на изменение change=connected. События change=link в Вашем случае можно игнорировать.

  • 0
Опубликовано
18 часов назад, admin сказал:

Состояния интерфейсов внутри системы начиная с версии 4.0 были переработаны. В частности, это выражается в наблюдаемом поведении.

Слой "link" находится на более низком уровне, и событие о его переходе в "up" приходит раньше, чем успевает поменяться состояние "connected". Подправьте скрипт, чтобы он реагировал на изменение change=connected. События change=link в Вашем случае можно игнорировать.

Настроил по вашему совету

[ "$1" == "hook" ] || exit 0
[ "$change" == "connected" ] || exit 0
[ "$id" == "Wireguard0" ] || exit 0

В таком случае я получаю запись в логах только при включении: 

Unblock_VPN: Wireguard0 changed: sourse of changes: connected; state: up; link status: up; connection status: yes

При выключении интерфейса WG строчка 

logger "Unblock_VPN: $id changed: sourse of changes: $change; state: $up; link status: $link; connection status: $connected"

вообще ничего в лог не пишет.

  • 0
Опубликовано (изменено)
В 27.07.2024 в 12:37, komatera сказал:
[ "$change" == "connected" ] || exit 0

разве эта строчка в скрипте не отрабатывает при условии только когда статус connected? иначе скрипт завершается

закомментируйте ее или приведите в соответсвии с условием что она может быть false(no и т.д.)

Изменено пользователем Leshiyart
  • 0
Опубликовано (изменено)
12 часа назад, Leshiyart сказал:

разве эта строчка в скрипте не отрабатывает при условии только когда статус connected? иначе скрипт завершается

закомментируйте ее или приведите в соответсвии с условием что она может быть false(no и т.д.)

нет, connected это переменная, и она может принимать разные значения. image.png.02d45807f4517e2f0d8087601d73f932.png

Однако ваше сообщение навело меня на правильную мысль. Я вообще убрал эту строку, и стало отрабатывать. Спасибо.

Изменено пользователем komatera

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.