Jump to content
  • 0

4.0 Alpha 1 Изменили переменную $change в триггере ifstatechanged.d


avn

Question

Изменилось поведение переменной $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. 
Edited by avn
Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 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.

 

Edited by avn
Link to comment
Share on other sites

  • 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
Edited by komatera
Link to comment
Share on other sites

  • 0

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

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

Link to comment
Share on other sites

  • 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"

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

Link to comment
Share on other sites

  • 0
В 27.07.2024 в 12:37, komatera сказал:
[ "$change" == "connected" ] || exit 0

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

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

Edited by Leshiyart
Link to comment
Share on other sites

  • 0
12 часа назад, Leshiyart сказал:

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

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

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

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

Edited by komatera
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...