Главная страница » Как написать скрипт для модема

Как написать скрипт для модема

  • автор:

Как написать скрипт, проверяющий состояние интернет соединения роутера

Уважаемые пользователи форума.
В этой теме http://www.linux.org.ru/forum/development/3969677#comment-3969684 было обсуждение процесса востановления ppp-соединения роутером.
Поскольку там не присутствовало работающено решения проблемы, я выкладываю статью, в которой я описал решение подобной проблемы на своем роутере.

Как написать скрипт, проверяющий состояние интернет соединения роутера на примере модема
D’link DSL 2640U с провайдером укртелеком ОГО.

Задача.
Есть модем D’link DSL 2640U и dsl соединение с провайдером укртелеком ОГО.
Соединение иногда отваливается.
Модем D’link DSL 2640U обычно сам восстанавливает ADSL-соединение и запускает pppd но,
иногда соединения с сервером повайдера по протоколу РРР не происходит. Необходимо написать скрипт проверяющий состояние соединения и, при обрыве восстанавливающий его.
Операционная система Debian Lenny.
Компьютер соединен с роутером по wifi.

Решение.
Модем D’link DSL 2640U поддерживает управление собой по протоколу ssh.
Это и будем использовать. Нам необходимо написать скрипт автоматический проверяющий
состояние соединения и при отсутствии его, заходит по ssh на модем и перезапускает РРР сессию.
Для этого необходимо использовать инструмент expect. Установим его. Для этого в консоли введем
sudo apt-get install expect
или
sudo aptitude install expect.
Expect — инструмент для автоматизации и тестирования в ОС Unix, написанный
Don Libes как расширение к скрипт-языку Tcl, для интерактивных приложений таких,
как telnet, ftp, passwd, fsck, rlogin, tip, ssh, и других.
С помощью Tk интерактивные приложения могут быть использованы с графическим интерфейсом (GUI) X11.
Expect поддерживает механизм регулярных выражений и основные
возможности программирования, позволяющие простым скриптам эффективно
управлять такими программами как telnet, ftp, и ssh, не обладающими встроенным
скрипт-языком, макросами, или другими механизмами программирования.

Нам нужно выполнять некоторые команды требующие прав супер юзера.
Для того чтобы sudo не спрашивал нас пароль при выполнении этих команд
необходимо править файл настройки /etc/sudoers. В этом файле нужно дописать строку

User mycomp = NOPASSWD: /bin/ping iwconfig
Где User – имя пользователя в системе, mycomp имя хоста.
Подробнее о настройках sudo можно почитать здесь http://system-administrators.info/?p=2574.
Далее нам нужно создать 2 файла. Для этого выполним в консоли

touch /home/user/check_network и touch /home/user/expect_ssh
и далим этим файлам права на выполнение

chmod u +x /home/user/check_network и chmod u +x /home/user/expect_ssh.
Далее в любом текстовом редакторе (vi, nano) открываем эти файлы и, собственно пишем скрипт.

Содержимое файла /home/user/check_network.

#!/bin/bash
HOST=ip_addres_router
#ай-пи адрес вашего роутера
Wifi_up=’sudo iwconfig wlan0 essid dark’
INET=google.com
EXPECT=’/home/user/expect_ssh ‘
#Проверяем пингуется ли роутер, и если пинга нет, восстанавливаем wifi-соединение.
if [ «`ping $HOST -c 2 -a | grep ttl`» == «» ]; then
echo «no ping :(»
$Wifi_up
Fi
#Проверяем пингуется ли гугл (он то никогда не упадет :-)) и если нет то выполняем файл expect_ssh
if [ «`ping $INET -c 2 -a | grep ttl`» == «» ]; then
echo «No ping inet»
$EXPECT
fi
echo «connect is good»

Содержимое файла /home/user/expect_ssh

#!/usr/bin/expect
spawn ssh admin@ай-пи_адрес_роутера
expect «password:»
send «Свой пароль на роутер\r»
expect -re «\\> $»
send «ppp config 0.1.32 down\r»
expect «%»
send «ppp config 0.1.32 up\r»
expect «%»
send «logout\r»
expect «closet»
exit 0
Почему мы создали 2 файла? Все довольно просто. Для нормального выполнения bash-скрипта необходимо
объявить #!/bin/bash.А для нормального выполнения expect необходимо объявить #!/usr/bin/expect.
Итак. Скрипт пингует проутер и при отсутствии wifi-соединения восстанавливает его.
Потом скрипт пингует гугл и при отсутствии пинга заходит на роутер по ssh и восстанавливает PPP-соединение.
Если связь есть, скрипт прекращает свою работу.
Для того чтобы скрипт выполнялся каждые 5 минут в файл /etc/crontab дописываем

Техническая поддержка

Для всех базовых скриптов GSM модемов серии RX с интерпретатором языка программирования Python, разработана специальная графическая программа для загрузки скриптов в модем.

Данная программа называется RX Configuration Tool, скачать ее можно c официального сайта, перейдя по ссылке: TELEOFIS RX Configuration Tool.

Как только мы скачали программу, открываем ее и попадаем в основной интерфейс.

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

  1. Скачиваем необходимый скрипт, распаковываем архив в отдельную папку.
  2. В программе RX Configuration Tool открываем «Настройки программы» — «Скрипт» — указываем путь до распакованной папки.
  3. В строке «Режим выполнения скрипта» необходимо прописать «Безусловное выполнение», если строка не заполнена автоматически.

4. Переходим на вкладку «Загрузка пользовательского скрипта», видим, что появились основные параметры, которые можно редактировать.

5. После настройки основных параметров Вашего скрипта нажимаем на кнопку «Загрузить скрипт».

6. После успешной загрузки скрипта консоль сообщит «Успешно».

7. Поздравляю! Вы успешно загрузили скрипт в модем.

Важно: Бывают случаи, когда скрипт устанавливается в модем с ошибкой. В таком случае необходимо выключить а затем заново подать питание на модем и в первые 10 секунд после подачи питания нажать на кнопку «Остановить скрипт», Как только скрипт успешно остановится, необходимо будет перезаписать его в модем.

Для удобства создана таблица с основными скриптами.

Таблица 1 — Основные скрипты для модемов TELEOFIS серии RX

ВНИМАНИЕ: Скрипт GPRS Terminal для первой версии версии необходимо использовать также для версий: rel 2.2a, rel 2.3

Скрипт GPRS Terminal для GPRS Terminal для версии модемов RX rel.2 необходимо использовать для версий: rel 2.0, rel 2.1, rel 2.2

Переключение с резервной SIM-карты на основную также происходит в автоматическом режиме.

Позволяет реализовать автоматическое переключение SIM в случае пропадания связи.

После установки скрипта, модем будет проверять регистрацию в сети, наличие подключения к сети Интернет и в случае отсутствия подключения, будет переключаться на резервную SIM.

Позволяет реализовать автоматическое переключение SIM в случае пропадания связи.

После установки скрипта, модем будет проверять регистрацию в сети, наличие подключения к сети Интернет и в случае отсутствия подключения, будет переключаться на резервную SIM.

Выполняет перезагрузку модема в случае зависания GSM модуля в течении 10 минут, а так же безусловно — каждые 24 часа.

Более подробную информацию по данным скриптам можно найти в статье: Базовые скрипты для модемов TELEOFIS

Простой скрипт для рассылки СМС

Я продолжаю изучать Питон. Язык красивый, меня радует что когда мой коллега — непрограммист, садится за мой код он его может прочитать и понять. Встала задача сделать СМС оповещение клиентов (ну о просрочке, новых услугах итд). Мы купили GSM модем Teleofis. Для работы с ним пошукали проги, не особо нашли, а уж бесплатного и тем более. Пришлось открыть мануалы и написать простенькую прогу под Винду, которая открывает COM порт, на котором сидит модем и пишет в него AT команды.

Сам скрипт требует pySerial для работы под виндоус.

Чтобы запустить скрипт, надо воткнуть в комп модем, установить дрова, открыть файлик sms_sender.py и отредактировать там строку 90:

Первый параметр — кортеж адресатов, второй — текст сообщения. Третий — номер порта. Остальные нам не нужны — это скорость и таймаут ожидания ответа.
А потом сделать из Командной строки вызов команды
python sms_sender.py

Это скрипт рассылает части вашего сообщения адресатам. Вот и все.
Сам скрипт доступен по ссылке. Ограничений на его использование никаких, он сильно простой и маленький чтобы как-то ограничивать его использование.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *