Bash: учим свои скрипты отправлять смс

Discussion in 'Linux, Freebsd, *nix' started by Joker-jar, 4 Jun 2010.

  1. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    Хочу поделиться реализацией отправки смс из-под bash-скриптов. Может, кому-то будет полезно. Я, например, таким образом сделал смс-уведомления при отключении питания.

    Сообщения я отправляю через email2sms шлюз провайдера. Для моего прова ссылка для настройки следующая:

    http://eao.megafon.ru/services/wap_internet/mail/email2sms/

    Создал ящик, при отправки на него письма на телефон прилетает смска с текстом письма. Похожая услуга должна быть и у других провайдеров.

    Поглядел на несколько консольных программок для отправки e-mail, окончательный выбор остановился на ssmtp, ибо проста до ужаса. Есть в репах арча и убунты, на счет остальных дистрибутивов не знаю. Для отправки почты нужно завести какую-нибудь учетку на почтовом сервере, затем отредактировать конфиг /etc/ssmtp/ssmtp.conf:
    Code:
    root=[b]e-mail[/b]
    mailhub=[b]smtp-сервер[/b]
    rewriteDomain=[b]домен e-mail'а[/b]
    
    FromLineOverride=YES
    
    authuser=[b]имя пользователя[/b]
    authpass=[b]пароль[/b]
    
    Отправка смс осуществляется следующим образом:
    Code:
    (
      echo "To: <[b]e-mail, забинденный на ваш телефон[/b]>"
      echo "From: <[b]e-mail-отправитель, прописанный в конфиге ssmtp[/b]>"
      echo "Subject: [b]тема письма[/b]"
      echo " "
      echo "[b]текст письма[/b]"
    ) | ssmtp [b]e-mail, забинденный на ваш телефон[/b]
    
    Непосредственно для отслеживания перебоев в питании я использую демон apcupsd, опрашивающий мой APC Smart UPS 1000. В папке /etc/apcupsd лежат скрипты offbattery и onbattery, выполняющиеся при наступлении соответствующих событий (можно создать дополнительные скрипты на события, в документации описано). Например, скрипт onbattery выполняется при отключении питания, когда происходит переключение на питание от батареи. В скрипте по дефолту прописан код, отсылающий системное сообщение о событии. перед строкой "exit 0" я добавил блок, отправляющий смс-уведомление:
    Code:
    (
      echo "To: <*****@sms.megafondv.ru>"
      echo "From: <*****@joker-jar.ru>"
      echo "Subject: UPS message `date \"+%d.%m.%Y %H:%M:%S\"`"
      echo " "
      echo "Power failure on UPS. Running on batteries"
    ) | ssmtp *****@sms.megafondv.ru
    
    Аналогичное проделал в скрипте offbattery
     
  2. buxmanager

    buxmanager Elder - Старейшина

    Joined:
    1 Apr 2009
    Messages:
    613
    Likes Received:
    229
    Reputations:
    69
    Про отправку письма и превращение его в смс на телефоне вроде бы давно известно и пользуются.... но у тебя и скриптик адаптированный есть! Спасибо!