X

Автоматическая перезагрузка модема Keenetic при обнаружении раздачи интернета Yota

Приветствую!

Пользуясь мобильным Интернетом от Yota, можно экономить ежемесячно энную сумму за счёт подключения тарифа, на котором запрещена раздача мобильного Интернета. Однако если осуществить определённые манипуляции, то по факту раздача будет работать, однако время от времени всё равно будет возникать выявление факта раздачи. И именно решение этой проблемы и будет приведено в данном материале. Мы создадим скрипт и добавим его в роутер семейства Кинетик.

Принцип действия: скрипт каждые 10 секунд обращается к адресу captive.apple.com и если в ответ происходит переадресация страницы, в адресе которого фигурирует phone-tethering или tablet-tethering, то происходит отправка AT команды перезагрузки модема.

Перезагрузка модема при детекте раздачи интернета Ёта – инструкция по установке скрипта в Кинетик

  1. На роутере должен быть установлен пакет Entware.
  2. Откройте на компьютере текстовый редактор с подсветкой синтаксиса, там создайте файл и впишите следующее содержание:
    #!/opt/bin/sh
    
    while : ; do
        content=$(wget -O /dev/null http://captive.apple.com 2>&1)
        if echo $content | grep -qE "(phone-tethering|tablet-tethering)"; then
           curl -s -d '{"command":"AT+CFUN=0"}' localhost:79/rci/interface/UsbQmi0/tty/send
        else
            sleep 10
        fi
    done

    Тут необходимо пояснить несколько моментов.

    • В примере кода отправляется AT команда AT+CFUN=0 . Для имеющегося на руках модема Sierra EM7455 это лучшая команда на перезагрузку. Однако если в вашем случае оная не будет работать должным образом, то посмотрите AT команды для вашего модема, смотрите команды перезагрузки и управления питанием.
    • Также вместо UsbQmi0 может быть UsbLte0. Используемый в вашем случае интерфейс можно подчеркнуть в адресной строке при открытии «Метрики сигнала».
  3. Сохраните файл с вписанным кодом под именем modem_check.sh Перед сохранением проверьте, чтобы кодировка файла была Unix (LF)
  4. Откройте консоль Entware. Если забыли к ней пароль, то откройте просто командную строку роутера и там введите команду exec sh и теперь вы сможете вводить необходимые команды.

    Последовательно введите команды:

    opkg update
    opkg install curl
    opkg install wget
    mkdir /opt/scripts
  5. Загрузите файл скрипта в только что созданную папку под именем scripts. Это можно сделать, выбрав в веб интерфейсе Кинетика пункт Приложения и далее нажав на диск, где установлен Entware.
  6. Загрузив файл скрипта, теперь вернитесь в консоль и выполните команду:
    chmod +x /opt/scripts/modem_check.sh
  7. Дабы наш скрипт запускался после включения или перезагрузки роутера, необходимо сделать следующие шаги. Для этого вновь откройте на компьютере текстовый редактор с подсветкой синтаксиса, там создайте файл и впишите следующее содержание:
    #!/bin/sh
    PROG=modem_check.sh
    case ${1} in
        start|restart)
            /opt/scripts/${PROG} & ;;
        stop)
            killall ${PROG} ;;
    esac
  8. Сохраните файл с вписанным кодом под именем S88modem_check Перед сохранением проверьте, чтобы кодировка файла была Unix (LF)
  9. Загрузите файл скрипта в папку, что находится по адресу /etc/init.d/ . Это можно сделать, выбрав в веб интерфейсе Кинетика пункт Приложения и далее нажав на диск, где установлен Entware.
  10. Загрузив файл, теперь вернитесь в консоль и выполните команду:
    chmod +x /opt/etc/init.d/S88modem_check
  11. Пробуем запустить, для этого в консоли вводим:
    /opt/etc/init.d/S88modem_check start

    и затем остановить

    /opt/etc/init.d/S88modem_check stop

    Если все работает штатно, т.е. после запуска с ключом start в консоли ввести команду ps w | grep modem_check.sh появится вывод в виде имени файла, а после запуска с ключом stop вывод пустой (кроме grep), то все хорошо и можно попробовать перегрузить роутер при помощи команды reboot.

Готово. Теперь не надо будет вручную перезагружать модем или роутер. Но если кому интересно, то я это делал удалённо отправкой команды interface UsbQmi0 tty send AT+CFUN=0 Подробнее о командах. На компьютере я сделал для этого ярлык, клик по которому который запускал PuTTY с автоматической отправкой команды. А на смартфоне я с помощью приложения JuiceSSH также сделал ярлык быстрой отправки команды (платная версия это позволяет).

Если интересна пошаговая реализация, то напишите об этом в комментариях к материалу, расскажу в подробностях.

Привет.
Не секрет, что в экономике ныне дела обстоят не лучшим образом, цены растут, а доходы падают. И данный сайт также переживает нелёгкие времена :-(
Если у тебя есть возможность и желание помочь развитию ресурса, то ты можешь перевести любую сумму (даже самую минимальную) через форму пожертвований, или на следующие реквизиты:

Номер банковской карты: 5331 5721 0220 5546
Кошелёк ЮMoney: 410015361853797
DonationAlerts: https://www.donationalerts.com/r/it_actual_ru
BitCoin: 1DZUZnSdcN6F4YKhf4BcArfQK8vQaRiA93

Оказавшие помощь:
Сергей И. - 500руб
<аноним> - 468руб
<аноним> - 294руб
Мария М. - 300руб
Валерий С. - 420руб
<аноним> - 600руб
Полина В. - 240руб

Деньги пойдут на оплату хостинга, продление домена, администрирование и развитие ресурса. Спасибо.
С уважением, создатель сайта IT-Actual.ru

Очень нужна твоя помощь!
Прочти, пожалуйста (ссылка откроется в новом окне)


Я не собираюсь помогать, закрыть это окно