Jump to content
  • 4

Некорректно работают скрипты из /opt/etc/ndm/neighbour.d/


AminDesu
 Share

Question

Скрипты в папке /opt/etc/ndm/neighbour.d/ запускаются при каких-то событиях с каким-то устройством в сети, к примеру подключение-отключение. В качестве параметров скрипту передаются некоторые переменные, которые позволяют идентифицировать устройство и событие.

В 3.7 что-то изменилось/сломалось и некоторые события не приходят.

Вот скрипт /opt/etc/ndm/neighbour.d/010-run.sh

#!/bin/sh

echo $id >> /opt/etc/ndm/neighbour.d/1.txt
echo $update >> /opt/etc/ndm/neighbour.d/1.txt
echo $action >> /opt/etc/ndm/neighbour.d/1.txt
echo $address >> /opt/etc/ndm/neighbour.d/1.txt

Если в 3.6 после создания скрипта отключить/включить вайфай на телефоне, подключённом к роутеру, то в 1.txt будет что-то типа

13
none
new
ipv4

А в 3.7 получаем

ip6list
update
ipv6
20

Вдобавок, события или не приходят, или (иногда, когда приходят) с огромной задержкой.

  • Upvote 2
Link to comment
Share on other sites

15 answers to this question

Recommended Posts

  • 0

@AminDesu @heizenberg я проверил работу скрипта в версии 3.07.C.0.0-1 и не вижу проблем.

Если вы считаете, что что-то работает неправильно, опишите более подробно проблемный сценарий, а также сравните вывод "show ip hotspot" с ожидаемым состоянием системы.

Link to comment
Share on other sites

  • 0

Судя по документации

https://github.com/ndmsystems/packages/wiki/Opkg-Component#ndmneighbourd

скрипты с этой папки дожны вызываться при разных евентах в сети. В качестве параметров скриптам передаются некоторые параметры, которые идентифицируют тип события и некоторые другие данные. Конеретно у меня настроены скрипты на экшены new (подключение устройства) и del (отключение устройства). Так вот эти события на 3.7 не отрабатывают. При подключении/отключении устройств скриптам внутри папки /opt/etc/ndm/neighbour.d/ не приходят аргументы new/del, приходит только параметр update. И только иногда, рандомно, могут прийти параметры new/del, и скрипт отработает. Также скрипт отрабатывает сразу после перезагрузки роутера, потом перестает работать.

@sergeyk, проверьте у себя скрипт с первого сообщения, будут ли у Вас в текстовый документ писаться евенты new/del при подключении/отключении устройств.

По крайней мере на 3.6.10 у меня сейчас все работает именно так. А на 3.7 этих евентов нет

Edited by heizenberg
Link to comment
Share on other sites

  • 0
4 минуты назад, heizenberg сказал:

@sergeyk, проверьте у себя скрипт с первого сообщения, будут ли у Вас в текстовій документ писаться евенты new/del при подключении/отключении устройств.

 Вы проверяете с проводными или беспроводными клиентами? Они подключены непосредственно к устройству или через коммутатор / другую AP? Устройства появляются в выводе "show ip hotspot"?

Link to comment
Share on other sites

  • 0

Устройства беспроводные, подключены к роутеру. Вывод "show ip hotspot" не проверял, но по идее они должны там быть. Да и в моем случае никакие условия, кроме версии прошивки, не меняются. 3.6.10 - работает, обновляю на 3.7, все настройки прежние - не работает.

Link to comment
Share on other sites

  • 0
3 минуты назад, heizenberg сказал:

Устройства беспроводные, подключены к роутеру. Вывод "show ip hotspot" не проверял, но по идее они должны там быть. Да и в моем случае никакие условия, кроме версии прошивки, не меняются. 3.6.10 - работает, обновляю на 3.7, все настройки прежние - не работает.

Покажите вывод этого скрипта (/opt/etc/ndm/neighbour.d/01.print_env.sh):

#!/opt/bin/ash
env

Я проверял работу в таком же сценарии; в моём окружении события приходят. Также покажите вывод "show ip hotspot" после подключения устройства.

Link to comment
Share on other sites

  • 0

@sergeyk, проверил.

Вывод скрипта:

USER=root
SSH_CLIENT=192.168.1.150 57018 222
SHLVL=2
HOME=/opt/root
TERMINFO=/opt/share/terminfo
SSH_TTY=/dev/pts/1
LOGNAME=root
TEMP=/opt/tmp
TERM=xterm
PATH=/opt/sbin:/opt/bin:/opt/usr/sbin:/opt/usr/bin:/usr/sbin:/usr/bin:/sbin:/bin
LANG=en_US.UTF-8
TMP=/opt/tmp
SHELL=/opt/bin/sh
PWD=/root
LC_ALL=
SSH_CONNECTION=192.168.1.150 57018 192.168.1.1 222

 

 

Spoiler

1.png

 

Edited by heizenberg
Link to comment
Share on other sites

  • 0
2 часа назад, heizenberg сказал:

@sergeyk, проверил.

Вывод скрипта:

У меня не получается воспроизвести проблему на Ultra II. Я проверяю с зарегистрированным беспроводным клиентом с фиксированным IP-адресом. События new и update приходят при подключении.

Видимо у вас есть какие-то особые настройки и компоненты, отличающиеся от рекомендованного набора, так что дальше от вас потребуется либо self-test, либо список минимального набора компонентов и конфигурации, при которой возникает проблема.

Link to comment
Share on other sites

  • 0
3 часа назад, heizenberg сказал:

@sergeyk, проверил.

Вывод скрипта:

USER=root
SSH_CLIENT=192.168.1.150 57018 222
SHLVL=2
HOME=/opt/root
TERMINFO=/opt/share/terminfo
SSH_TTY=/dev/pts/1
LOGNAME=root
TEMP=/opt/tmp
TERM=xterm
PATH=/opt/sbin:/opt/bin:/opt/usr/sbin:/opt/usr/bin:/usr/sbin:/usr/bin:/sbin:/bin
LANG=en_US.UTF-8
TMP=/opt/tmp
SHELL=/opt/bin/sh
PWD=/root
LC_ALL=
SSH_CONNECTION=192.168.1.150 57018 192.168.1.1 222

 

 

  Показать содержимое

 

Стоп. А почему у вас установлены переменные окружения SSH_*?

Предвижу, что это вывод не того скрипта и не в том месте.

Link to comment
Share on other sites

  • 0
3 minutes ago, Le ecureuil said:

Стоп. А почему у вас установлены переменные окружения SSH_*?

Предвижу, что это вывод не того скрипта и не в том месте.

Ну я просто закинул скрипт по тому пути и запустил его, будучи подключенным по ssh. Вот другой вывод, запись скриптом в файл в момент его вызова системой

timezone=Europe/Kiev
USER=root
LD_LIBRARY_PATH=/opt/lib:/opt/usr/lib:/lib:/usr/lib
SHLVL=1
HOME=/
action=update
NDM_MOUNT_ROOT=/tmp/mnt
LD_BIND_NOW=1
id=17
TERM=linux
update=ip6list
PATH=/opt/bin:/opt/sbin:/opt/usr/bin:/opt/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin
LANG=UTF-8
SHELL=/bin/sh
address=ipv6
PWD=

 

Link to comment
Share on other sites

  • 0
9 минут назад, heizenberg сказал:

Ну я просто закинул скрипт по тому пути и запустил его, будучи подключенным по ssh. Вот другой вывод, запись скриптом в файл в момент его вызова системой

timezone=Europe/Kiev
USER=root
LD_LIBRARY_PATH=/opt/lib:/opt/usr/lib:/lib:/usr/lib
SHLVL=1
HOME=/
action=update
NDM_MOUNT_ROOT=/tmp/mnt
LD_BIND_NOW=1
id=17
TERM=linux
update=ip6list
PATH=/opt/bin:/opt/sbin:/opt/usr/bin:/opt/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin
LANG=UTF-8
SHELL=/bin/sh
address=ipv6
PWD=

 

Вот именно это и нужно было с самого начала.

И что, всегда только так?

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.

 Share

  • Recently Browsing   0 members

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