Jump to content

Question

Posted (edited)

Изменилось поведение переменной $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

7 answers to this question

Recommended Posts

  • 0
Posted (edited)

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

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
  • 0
Posted (edited)

Добрый день. Проблема актуальна на 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
  • 0
Posted

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

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

  • 0
Posted
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
Posted (edited)
В 27.07.2024 в 12:37, komatera сказал:
[ "$change" == "connected" ] || exit 0

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

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

Edited by Leshiyart
  • 0
Posted (edited)
12 часа назад, Leshiyart сказал:

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

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

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

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

Edited by komatera

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

Important Information

This site uses cookies. By clicking "I accept" or continuing to browse the site, you authorize their use in accordance with the Privacy Policy.