Jump to content

Запуск скрипта по нажатию на кнопки Keenetic


Recommended Posts

3 минуты назад, keenet07 сказал:

По счетчику четное/нечетное нажатие

Где хранить, Как получать доступ, А после сброса по питанию переменная будет сброшена, разве что хранить в файле. Узнать состояние сложнее, но изящнее. Но в любом случае спасибо за совет.

Link to comment
Share on other sites

31 минуту назад, iFinder сказал:

Но как можно узнать текущее состояние интерфейса в скрипте ?

Есть же команда show interface, по идее там и статус ее должен быть ... надо в справочнике по cli смотреть в общем :)

  • Upvote 1
Link to comment
Share on other sites

49 минут назад, iFinder сказал:

Напишите пожалуйста, кто знает, строчку или две кода для этого. 

Например так:

ndmq -p 'show interface {interface name}' -x -P state

 

Edited by r13
Link to comment
Share on other sites

12 минуты назад, r13 сказал:

ndmq -p 'show interface {interface name}' -P state

Даже скорее так, xml не нужон. 

  • Thanks 1
Link to comment
Share on other sites

5 часов назад, r13 сказал:

ndmq -p 'show interface {interface name}' -P state

Круто: одной строкой !

Используя совет, сделал так:

NameWiFi="WifiMaster0/AccessPoint2"
State=`ndmq -p 'show interface '$NameWiFi -P state`
echo -e State=$State

 

Link to comment
Share on other sites

Особая благодарность keenet07 и r13. Подсказанные ими ключевые моменты сделали возможным написание версии скрипта, обрабатывающего все возможные варианты нажатия кнопок Keenetic.

Вот, что получилось:

Скрытый текст

 

#!/opt/bin/bash
# Версия 14 (определяется состояния WiFi-сети и через 2 'case in' делается переключение)


# ====== Определяем переменные
WiFi_ID="WifiMaster0/AccessPoint1"    #0 = Домашняя, 1 = Гостевая, 2 = Рабочая
WiFi_Type="Гостевая"
#echo -e WiFi_ID=$WiFi_ID


# ====== Записываем в журнал Keenetic для истории и отладки
#logger "PressButtons: button=$button"   # Варианты: RESET, WLAN, FN1, FN2
#logger "PressButtons: action=$action"   # Варианты: click, double-click, hold
#logger "PressButtons: button=$button  action=$action"


case "$button" in
# ++++++ Нажата Кнопка WLAN - Анализируем тип нажатия
"WLAN" )
    case "$action" in
    # +++ Нажатие короткое - ?????
    "click" )
        #echo -e button=WLAN  action=click
        ;;
    # +++ Нажатие двойное - ?????
    "double-click" )
        #echo -e button=WLAN  action=double-click
        ;;
    # +++ Нажатие долгое - ?????
    "hold" )
        #echo -e button=WLAN  action=hold
        ;;
    esac
    ;;


# ++++++ Нажата кнопка FN1 - Анализируем тип нажатия
"FN1" )
    case "$action" in
    # +++ Нажатие короткое - Переключаем нужную WiFi-сеть
    "click" )
        #echo -e button=FN1  action=click
        # == Получение состояния нужной WiFi-сети
        State=`ndmq -p 'show interface '$WiFi_ID -P state`
        echo -e State=$State
        # ++ WiFi-сеть Включена - Отключаем
        if [ "$State" == "up" ]
        then
            ndmq -x -p "interface "$WiFi_ID" down"
            logger "PressButtons: "$WiFi_Type" WiFi-сеть отключена коротким нажатием кнопки FN1."
        # ++ WiFi-сеть Отключена - Включаем
        else
            ndmq -x -p "interface "$WiFi_ID" up"
            logger "PressButtons: "$WiFi_Type" WiFi-сеть включена коротким нажатием кнопки FN1."
        fi
        ;;
    # +++ Нажатие двойное - ?????
    "double-click" )
        #echo -e button=FN1  action=double-click
        ;;
    # +++ Нажатие долгое - ?????
    "hold" )
        #echo -e button=FN1  action=hold
        ;;
    esac
    ;;


# ++++++ Нажата кнопка FN2 - Анализируем тип нажатия
"FN2" )
    case "$action" in
    # +++ Нажатие короткое - ?????
    "click" )
        #echo -e button=FN2  action=click
        ;;
    # +++ Нажатие двойное - ?????
    "double-click" )
        #echo -e button=FN2  action=double-click
        ;;
    # +++ Нажатие долгое - ?????
    "hold" )
        #echo -e button=FN2  action=hold
        ;;
    esac
    ;;
esac

 


 

  • Thanks 1
Link to comment
Share on other sites

  • 1 year later...

Здравствуйте товарищи! хочу отправить Wake-on-LAN через кнопку fn. как это сделать?
Например через OPKG - Запуск скриптов button.d можно но не знаю как сделать дайте пожалуйста информацию подробнее как создать скрипт и через какую. программу :D

Link to comment
Share on other sites

2 часа назад, admin Keenetic сказал:

подробнее как создать скрипт

Пример выше есть же, вполне себе подробный.

2 часа назад, admin Keenetic сказал:

через какую. программу 

В репозитории opkg есть команда wakeonlan. Установить можно так

opkg install wakeonlan

Команде в качестве параметра даём MAC-адрес устройства, которое хотим разбудить.

wakeonlan a8:1e:84:11:f1:22

Можно несколько mac-адресов поместить в текстовый файл, который затем вызывать с параметром f:

wakeonlan -f file_path/file_name

Но правильнее, с моей точки зрения, использовать средства роутера, через REST API. Команда (должен быть установлен пакет wget-nossl) :

wget -qO - --post-data='[{"mac":"a8:1e:84:11:f1:22"}]' http://localhost:79/rci/ip/hotspot/wake

либо устаревшую ndmq, как в примере выше:

ndmq -p "ip hotspot wake a8:1e:84:11:f1:22"

Но сейчас пакет ndmq удалён из репозитория, скачать его можно только из архива, настоятельно рекомендуют использовать REST API.

Edited by vadimbn
  • Thanks 1
  • Upvote 1
Link to comment
Share on other sites

7 часов назад, vadimbn сказал:

должен быть установлен пакет wget-nossl

wget апплет busybox`a вполне себе справляется

7 часов назад, vadimbn сказал:

Но сейчас пакет ndmq удалён из репозитория, скачать его можно только из архива, настоятельно рекомендуют использовать REST API.

лучше сейчас начать изучение rci, чем получить "нежданчик", когда поддержку выпилят полностью и ndmq перестанет работать...

  • Thanks 1
  • Upvote 1
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
Reply to this topic...

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