Gnokii
Материал из Xgu.ru
Содержание |
[править] Настройка gnokii
Необходимо указать:
- port — порт, через который выполнено подключение телефона;
- model — название внутреннего драйвера gnokii для доступа к телефону (или AT, если телефон поддерживает AT-команды);
- connection — способ соединения телефона с компьютером (serial/irda/bluetooth).
Пример конфигурационного файла gnokii.
Подключен мобильный телефон Sony Ericcson (интерфейс AT-команд); подключение выполнено через USB-кабель.
%# grep -v ^# /etc/gnokiirc | grep -xv '' [global] port = /dev/ttyACM0 model = AT initlength = default connection = serial use_locking = yes serial_baudrate = 19200 smsc_timeout = 10 [gnokiid] bindir = /usr/sbin/ [connect_script] TELEPHONE = 12345678 [disconnect_script] [logging] debug = off rlpdebug = off xdebug = off
[править] Работа с SMS
[править] Получение SMS
%# gnokii --getsms ME 1 GNOKII Version 0.6.14 1. Inbox Message (read) Date/time: 19/06/2007 16:26:32 +0200 Sender: +380503996172 Msg Center: +38050000501 Text: uname
[править] Отправка SMS
Текст сообщение передаётся на стандартный поток ввода программы gnokii:
%# echo test from gnokii | gnokii --sendsms +380503996172
[править] Удаление SMS
Для удаления сообщения необходимо указать тип памяти и номер сообщения.
Внутренняя память телефона обозначается кодом ME. Сообщения нумеруются, начиная с 1. После удаления сообщения не сдвигаются, т.е. сообщение под номером 2 остаётся сообщением под номером 2, даже если сообщение 1 удалено.
# gnokii --deletesms ME 1 GNOKII Version 0.6.14 Deleted SMS ME 1
Безуспешная попытка удалить SMS.
(SMS после удаления не сдвигается)
%# gnokii --deletesms ME 1 GNOKII Version 0.6.14 DeleteSMS ME 1 failed!(Unknown error - well better than nothing!!)
[править] SMS-шлюз
Рассмотрим, как можно использовать gnokii для управления системой с помощью SMS.
Ниже показан скрипт, который позволяет получать SMS с текстом команды, исполнять её и отправлять результат управления обратно.
Скрипт стоит рассматривать скорее как заготовку, чем как рабочее решение. Для промышленного использования его стоит доработать.
Рекомендуется из соображений безопасности:
- проверять команду на вхождение в заранее предопределённое допустимое множество (исключающее потенциально опасные команды);
- проверять телефон отправителя на вхождение в предопределённый список авторизованных пользователей шлюза.
Рекомендуется из соображений удобства:
- предопределить набор «быстрых» часто использующихся команд (функций), которые можно вызывать без длительного набора на клавиатуре телефона.
Скрипт не выполняет никакой авторизации и аутентификации SMS-сообщений, что представляет большую угрозу для безопасности системы. Не следует воспринимать скрипт как готовое решение — это просто пример, который для использования в рабочих системах необходимо доработать |
<sh/>
smsgate()
{
sender="`gnokii --getsms ME 1 2> /dev/null |grep Sender | awk '{print $2}'`"; [ -z "$sender" ] || { result="$(gnokii --getsms ME 1 2> /dev/null | sed '1,/^Text:/ d' 2> /dev/null | sh -s)"; echo $result | gnokii --sendsms $sender; gnokii --deletesms ME 1 }
}
Пример вызова:
<sh/>
while true
do
smsgate sleep 1
done
Полная версия скрипта, который будет висеть и обрабатывать входящие SMS-сообщения:
- !/bin/sh
smsgate() {
sender="`gnokii --getsms ME 1 2> /dev/null |grep Sender | awk '{print $2}'`"; [ -z "$sender" ] || { result="$(gnokii --getsms ME 1 2> /dev/null | sed '1,/^Text:/ d' 2> /dev/null | sh -s)"; echo $result | gnokii --sendsms $sender; gnokii --deletesms ME 1 }
}
while true do
smsgate sleep 1
done
[править] Сравнение SMS-шлюза и управления через SSH-клиент мобильного телефона
Для большинства современных телефонов существует SSH-клиент, позволяющий удалённо регистрироваться на сервере и получать доступ к командному интерпретатору.
Управление через SMS не является заменой управления из SSH-клиента, запущенного на мобильном телефоне.
Следует иметь в виду:
- В обоих случаях уровень мобильности одинаков,
т.е. командный интерпретатор всегда доступен системному администратору;
- SSH-клиент передаёт данные в зашированном виде;
- SSH-клиент использует TCP/IP;
- SSH-клиент требует более мощного телефона;
- SSH-клиент выполняет полноценную аутентификацию;
- SSH-клиент не требует наличия телефона на сервере;
- При использовании SMS-управления известно с какого телефона отправлена команда;
- SMS-управление осуществляет доступ к системе напрямую, без использования TCP/IP.
SMS-управление может пригодиться тогда, когда сервер недоступен по сети. Например, если в результате ошибки в настройке брандмауэра закрыт удалённый доступ к системе, или удалён шлюз-по-умолчанию.
[править] Дополнительная информация
- Gnokii Home — Домашняя страница проекта gnokii
- Documentation — документация на сайте Gnokii
- GnokiiWiki
- Страница Config на GnokiiWiki — рабочие конфигурации для разных телефонов
- gnokii@lilalo — журнал экспериментов с gnokii