iFinder
-
Posts
175 -
Joined
-
Last visited
Content Type
Profiles
Forums
Gallery
Downloads
Blogs
Events
Posts posted by iFinder
-
-
Ну а теперь верх хотелок:
У меня три WiFi-сетки. Две управляются кнопкой стандартно. Короткое нажатие - Гостевая сеть, Двойное - Служебная сеть.
Логично было бы переключать третью (Домашнюю) сеть Долгим нажатием кнопки.
Именно переключать, а не задействовать два разных нажатия кнопки как в моём скрипте выше.
Но как можно узнать текущее состояние интерфейса в скрипте ?
Напишите пожалуйста, кто знает, строчку или две кода для этого.
-
Только что, ajs сказал:
2-а подряд идущих if
тоже работает. Но первый Ваш совет содержательнее: он показал, что есть разница в написании скриптов!
-
24 минуты назад, iFinder сказал:
Может кто знает, в чём причина ?
5 минут назад, ajs сказал:В конце попробуйте exit 0
В итоге ПОМОГЛО ! Надо в конце добавить:
exit 0
- 1
-
5 минут назад, ajs сказал:
Как по мне, одного fi не хватает
Else if и elif
- elif
-
elif -- это краткая форма записи конструкции else if. Применяется для построения многоярусных инструкций if/then.
if [ condition1 ] then command1 command2 command3 elif [ condition2 ] # То же самое, что и else if then command4 command5 else default-command fi
И при тестовом запуске из CLI/SSH всё нормально.
-
Итак подвожу итоги:
СОЗДАНИЕ СКРИПТА РЕАКЦИИ НА НАЖАТИЕ КНОПКИ KEENETIC
1. Создаю файл скрипта: /opt/etc/ndm/button.d/PressButtons.bash
2. Наполняю его содержимым:
Скрытый текст#!/opt/bin/bash # Версия 010 (Тесты) # ====== Записываем в журнал Keenetic для истории и отладки #logger "button=$button" # Варианты: WLAN, FN1, FN2 #logger "action=$action" # Варианты: click, double-click, hold logger "button=$button action=$action" # ++++++ Нажата кнопка FN1 - Анализируем тип нажатия if [ "$button" == "FN1" ] then # +++ Кнопка FN1 один раз - Включаем WiFi-сеть # Можно elif if [ "$action" == "click" ] then #ndmq -x -p "interface WifiMaster0/AccessPoint1 up" #logger "Гостевая WiFi-сеть включена одним нажатием кнопки FN1." ndmq -x -p "interface WifiMaster0/AccessPoint0 up" logger "Домашняя WiFi-сеть включена одним нажатием кнопки FN1." #continue # +++ Кнопка FN1 два раза - Отключаем WiFi-сеть else if [ "$action" == "double-click" ] then #ndmq -x -p "interface WifiMaster0/AccessPoint1 down" #logger "Гостевая WiFi-сеть отключена двойным нажатием кнопки FN1." ndmq -x -p "interface WifiMaster0/AccessPoint0 down" logger "Домашняя WiFi-сеть отключена двойным нажатием кнопки FN1." fi fi
3. Делаю его исполняемым:
chmod +x /opt/etc/ndm/button.d/PressButtons.bash
4. Указываю в Настройках Keenetic реакцию на нажатие кнопки FN1:
Однократное нажатие = "OPKG - Запуск скриптов button.d"
Двукратное нажатие = "OPKG - Запуск скриптов button.d"
5. Проверил запуском из CLI/SSH
/opt/etc/ndm/button.d/PressButtons.bash
НО ПРИ НАЖАТИИ КНОПКИ FN1 в журнале Keenetic появились записи:
Окт 29 17:56:28rootbutton=FN1 action=clickОкт 29 17:56:28ndmOpkg::Manager: /opt/etc/ndm/button.d/PressButtons.bash: /opt/etc/ndm/button.d/PressButtons.bash: line 34: syntax error: unexpected end of file.Окт 29 17:56:28ndmOpkg::Manager: /opt/etc/ndm/button.d/PressButtons.bash: exit code 2.Может кто знает, в чём причина ?
-
8 минут назад, keenet07 сказал:
Да и скрипт вроде должен быть в файле button.d а не buttons.sh если я не ошибаюсь.
У меня скрипт был и есть /opt/etc/ndm/button.d/PressButtons.bash
-
6 минут назад, keenet07 сказал:
Проверьте на всякий случай ещё раз права на файле скрипта. Разрешение на запуск.
И убедитесь, что вы правильную кнопку нажимаете в правильной комбинации нажатий подряд.
Получилось, оказалось перепутал кнопки FN:
Окт 29 15:27:24rootbutton=FN1Дальше дело техники ! -
5 минут назад, r13 сказал:
Если вместо echo использовать logger , то результат увидите в логе кинетика.
#!/opt/bin/bash logger "button=$button" #interface WifiMaster0/AccessPoint1 up #echo "Гостевая сеть запущена !"
В логе кинетика по-прежнему ничего нет
-
#!/opt/bin/bash logger "button=$button" #interface WifiMaster0/AccessPoint1 up #echo "Гостевая сеть запущена !"
В логе кинетика по-прежнему ничего нет
-
1 минуту назад, r13 сказал:
Ваш скрипт печатает строку в stdout и все.
Но в CLI/SSH ничего не появляется ! В данном случае разве stdout и CLI/SSH не одно и тоже ?
-
#!/opt/bin/bash echo "button=$button" #interface WifiMaster0/AccessPoint1 up #echo "Гостевая сеть запущена !"
Ничего не происходит при нажатии кнопки. Что делать ?
-
1 минуту назад, keenet07 сказал:
Включить Гостевую можно, а выключить нет. ))
В том то и дело, как написать,чтобы при одном типе нажатия включалась, а при другом отключалась ?
-
1 минуту назад, keenet07 сказал:
Если вдруг не заметили, для запуска Гостевой сети там уже есть предустановка. Скрипт не требуется.
Не только заметил, а несколько лет пользуюсь. Указал для примера: удобно контролировать и у всех есть.
-
В настройках Keenetic можно указать действие по нажатию кнопок: OPKG - Запуск скриптов button.d
Предполагаю, что реализации этой возможности надо:
1. Выбрать в WEB-интерфейсе Keenetic для конкретной кнопки "OPKG - Запуск скриптов button.d"
2. Создать файл /opt/etc/ndm/button.d/buttons.sh
3. Написать скрипт в файле buttons.sh:
- Из скрипта будут доступны дополнительные переменные окружения:
button — название кнопкина
action — тип нажатия- Задача будет, например, запустить Гостевую сеть
Вот набросок того, что предполагаю:
#!/opt/bin/bash interface WifiMaster0/AccessPoint1 up echo "Гостевая сеть запущена !"
4. Сделать скрипт исполняемым:
chmod +x /opt/etc/ndm/button.d/buttons.sh
Вопросы:
1. Соответствует ли действительности указанный выше подход ?
2. Как должен выглядеть скрипт buttons.sh ?
3. Как должен выглядеть скрипт buttons.sh с учётом какая кнопка нажата ?
-
2 часа назад, iFinder сказал:
Начинать новую тему ?
Не стоит. После танцев с бунами выяснилось, что файл архива битый. Взял другой - заработало.
3 часа назад, iFinder сказал:Жду и не могу понять как узнать,что дождался ?
Признаком выполнения процесса будет убывание свободного места на USB-флэшке
Длительность процесса для 10Гб файла архива ~2 минуты
Признаком окончания будет удаление папки 'install'- 1
-
-
5 минут назад, TheBB сказал:
Время распаковки зависит от мощности устройства и размера архива. Деталей не помню.
Жду уже 23 минуты.
Появилось несколько папок:
home\
Install\
lib\
lost+found\
sbin\
share\
tmp\Размер архива \\GigaYN\Entware\Install\GigaYN-Entware-backup-2019-10-16_12-09.tar.gz всего 20 МБ
Размер Entware был около 100 Мб !
Через 24 минуты размер всего 25 из них 20 архив !
Что-то снова не так. Что делать ?
Putty тоже не подключается.
-
23 часа назад, iFinder сказал:
21. создать каталог "install" и в него скопировать архив с резервной копией. В web устройства выбрать нужный накопитель, заполнить строку инициализации `/opt/etc/init.d/rc.unslung`, нажать "Сохранить" и ждать окончание процесса распаковки.
Жду и не могу понять как узнать,что дождался ?
-
3 часа назад, iFinder сказал:
Обновляются CLI-командами `opkg update && opkg upgrade`.
1 час назад, TheBB сказал:Смотря, как интерпретировать ))) Command Line Interface/Cisco Like Interface (https://help.keenetic.com/hc/ru/articles/213965889) или Command Line Interface/SSH - (Secure Shell)
Как всегда, дельное уточнение. Конечно надо было мне написать везде CLI/SSH-командами, например:
Обновляются CLI/SSH-командами `opkg update && opkg upgrade`.
Жаль, что форум не даёт возможности исправить.
-
29 минут назад, TheBB сказал:
В web - "Общие настройки" ("Общие настройки системы") => "Назначение кнопок и индикаторов интернет-центра"
Да это там, но что нужно сделать чтобы это заработало ? Предполагаю, что где-то надо создать файл button.d.
Ещё накопал на форуме: Opkg: передача в скрипт /opt/etc/ndm/button.d дополнительных переменных окружения:
- button — название кнопки
- action — тип нажатия
Значит ещё и другие переменные окружения есть. Как это всё вместе соединить ?
А может сделать для этого отдельную тему ?
-
1 минуту назад, TheBB сказал:
Для "приключений на разные части тела", есть ключ "-l" (umount -l /dev/...).
Нет приключений и так хватает. Но в общем понятно: сама себя без приключений не размонтирует, а значит не проверит.
Но на будущее учту такую возможность !
-
22. В настройках Keenetic можно указать действие по нажатию кнопок: OPKG - Запуск скриптов button.d. Что нужно сделать чтобы, например, включалась гостевая WiFi-сеть ?
-
На основании ответов TheBB, сделал себе памятку и делюсь с новичками.
РЕЗЕРВИРОВАНИЕ Entware
НА КОМПЬЮТЕРЕ:
1. Подключиться с помощью Putty к Entware:
- {IP вашего Keenetic} порт SSH 222
- Устанавить ангийскую раскладку
- Ввести логин root
- Ввести пароль keenetic
2. Сделать резервную копию (команда обязательно с точкой в конце !):~ # tar cvzf /opt/{Имя Вашего Keenetic}-Entware-backup-`date "+%Y-%m-%d_%H-%M"`.tar.gz -C /opt .
3. Закрыть Putty:~ # exit
4. Забрать из папки: \\{IP вашего Keenetic}\Entware\
созданный файл: {Имя Вашего Keenetic}-Entware-backup-2019-10-16_12-09.tar.gz
5. Переименовать файл, указав состояние Entware (например - 'перед обновлением')ОБНОВЛЕНИЕ Entware
НА КОМПЬЮТЕРЕ:
1. Сделать резервную копию Entware перед обновлением (см. выше)
2. Подключиться с помощью Putty к Entware:
- {IP вашего Keenetic}порт SSH 222
- Устанавить английскую раскладку
- Ввести логин root
- Ввести пароль keenetic
3. Выполнить обновление перечня установленных пакетов:~ # opkg update
4. Выполнить обновление:~ # opkg upgrade
5. Если будут ошибки, то обязательно выполнить обновление ещё раз
6. Сделать резервную копию Entware после обновления (см. выше)ВОССТАНОВЛЕНИЕ Entware НА НОВЫЙ USB-НОСИТЕЛЬ
НА КОМПЬЮТЕРЕ:
1. Вставить USB-флэшку в Комп
2. Отформатировать USB-флэшку в NTFS (все возможные: NTFS, HFS, Ext2/Ext3/Ext4)
1-ЫЙ ВАРИАНТ (НА КОМПЕ):
3. Создать в корне папку 'install'
4. Скопировать в неё архив с резервной копией
2-ОЙ ВАРИАНТ (НА РОУТЕРЕ УДАЛЁННО):
- Вставить USB-флэшку в Keenetic
- Предоставить удалённый доступ и Зайти на USB-флэшку удалённо через SMB
3. Удалённо создать в корне папку 'install'
4. Удалённо скопировать в неё архив с резервной копиейНА РОУТЕРЕ KEENETIC:
5. Вставить USB-флэшку в Keenetic (если не была вставлена ранее)
6. В WEB-интерфейсе Keenetic указать строку инициализации: '/opt/etc/init.d/rc.unslung'
7. Нажать 'Сохранить'
8. Дождаться окончания процесса распаковки
-
1 час назад, TheBB сказал:
б) - д) если не заниматься буквоедством ("CLI")
А что не так ? Я хотел отразить, что с помощью командной строки.
Запуск скрипта по нажатию на кнопки Keenetic
in Вопросы по сборке и настройке Opkg
Posted
Где хранить, Как получать доступ, А после сброса по питанию переменная будет сброшена, разве что хранить в файле. Узнать состояние сложнее, но изящнее. Но в любом случае спасибо за совет.