Столкнулся с проблемой. Редактировал по ssh таблицу маршрутизации и потерял связь с машиной. Ну, удалил маршрут нужный.
Нужно было вернуть всё на место. Давно знал эту замечательную статью -
http://xgu.ru/wiki/Gnokii
Сделал тоже самое, но используя gammu-smsd.
Получилось так:
Код:
#!/bin/sh
inbox=/var/spool/gammu/inbox
sender=$inbox/*номер_отправителя*
smsgate()
{
if
[ -e $sender ]
then
cat $sender 2> /dev/dull | sh -s
rm $sender
fi
}
while :
do
smsgate
sleep 1
done
И могу чуть-чуть пояснить. gammud хранит входящие sms в $inbox. Когда в эту папку попадает sms-ка от отправителя с определённым в $sender номером, то её тело попадает к интерпретатору команд. (команда\команды выполняются). Sms-ка удаляется. Тело этой работы описано в функции. Функция вызывается в бесконечном цикле с определённым интервалом.
Imho, вещица очень полезная. Её можно использовать много как. И как резервный канал не использующий tcp\ip.
[Ответ]
Давайте добавим простую авторизацию. (телефоны с которых разрешено отправлять команды в интерпретатор)
Это будет так:
Код:
#!/bin/sh
inbox=/var/spool/gammu/inbox
smsgate()
{
for sender in `cat $inbox/sender.smsgate`
do
if
[ -e $sender ]
then
cat $sender 2> /dev/dull | sh -s
rm $sender
fi
done
}
while :
do
smsgate
sleep 1
done
В файле sender.smsgate перечисляем телефоны в формате - *телефон*.
'предопределить набор «быстрых» часто использующихся команд (функций), которые можно вызывать без длительного набора на клавиатуре телефона.'
это лучше сделать через aliases в .bashrc, imho, но тут есть ряд подводных камней. Или через оператор case в самом скрипте, но это уже сложней.
'проверять команду на вхождение в заранее предопределённое допустимое множество (исключающее потенциально опасные команды);'
Это не нужно, imho.
'проверять телефон отправителя на вхождение в предопределённый список авторизованных пользователей шлюза.'
В список они уже входят, но можно подпридумать ещё.
Кстати, у многих щя sudo работает, да.
[Ответ]