Ad Widget

Collapse

Скрипт отправки SMS (без gsm модема)

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • sancho78rus
    Junior Member
    • Nov 2010
    • 23

    #16
    сменил темы. ничего.
    в этом случае, я думаю в панели управления smstraffic была бы смс в логах.
    а в заббиксе имя скрипта писать просто как sms.sh или с путем?

    Comment

    • Flegel
      Member
      • Nov 2009
      • 42

      #17
      Originally posted by sancho78rus
      сменил темы. ничего.
      в этом случае, я думаю в панели управления smstraffic была бы смс в логах.
      а в заббиксе имя скрипта писать просто как sms.sh или с путем?
      Пример моего zabbix_server.conf
      ### Option: AlertScriptsPath
      # Location of custom alert scripts
      #
      # Mandatory: no
      # Default:
      AlertScriptsPath=/etc/zabbix/scripts

      ### Option: ExternalScripts
      # Location of external scripts
      #
      # Mandatory: no
      # Default:
      ExternalScripts=/etc/zabbix/scripts
      Обязателен рестарт демона zabbix_server !
      Включите Debug в конфиге, смотрите что в логах

      В Administration - Media Type
      Type - Script
      Script Name - sms.sh (Полный путь указывать не нужно, он у Вас должен быть прописан в конфиге)
      Last edited by Flegel; 23-11-2010, 13:28.

      Comment

      • sancho78rus
        Junior Member
        • Nov 2010
        • 23

        #18
        Проблема была тут AlertScriptsPath=/etc/zabbix/scripts
        работает.
        Спасибо!

        Comment

        • Flegel
          Member
          • Nov 2009
          • 42

          #19
          Originally posted by sancho78rus
          Проблема была тут AlertScriptsPath=/etc/zabbix/scripts
          работает.
          Спасибо!
          Отлично, спасибо что протестили скрипты!

          Comment

          • Badisoft
            Member
            • Nov 2010
            • 94

            #20
            Под Centos 5.5 не заработало, видимо, неподходящая версия PHP. Пришлось заменить:

            Originally posted by Flegel
            sms.sh:
            run.php --to="$1" --body="$2" --subj="$3"
            на
            run.php -t "$1" -b "$2" -s "$3"

            Originally posted by Flegel
            run.php:
            $options= getopt('',array('to:','subj:','body:'));
            list($sms_id, $error)=Sms::send($options['to'], $options['subj'], $options['body'], 1);
            на
            $options= getopt(''t:s:b:"));
            list($sms_id, $error)=Sms::send($options['t'], $options['s'], $options['b'], 1);

            Originally posted by Flegel
            send_sms.php:
            class 1.0 (fsockopen)\nContent-Length: $params_len\nConnection: Close\n\n$pa
            rams\n");

            "&want_sms_ids=1&phones=$phone&message=".urlen code ($message) . "&max_parts=$max_parts&rus=$rus
            &originator=".urlencode($originator);
            ну а тут просто лишние переводы строки вкрались, как я понимаю .

            Дима.
            Last edited by Badisoft; 24-11-2010, 07:28.

            Comment

            • Badisoft
              Member
              • Nov 2010
              • 94

              #21
              Originally posted by Flegel
              Проверьте права доступа на скрипты для пользователя под которым работает Zabbix
              В моем случае chmod 755 на все скрипты
              chown -R zabbix:zabbix scripts
              Мне кажется, что 755 для этих двух php-скриптов сильно излишне. Ну, только если чтобы заведомо не грешить в эту сторону когда не работает. Ведь один из них запускается как параметр в командной строке PHP, а второй и вообще по include добавляется в первый.

              Спасибо! Удобный скриптик получился. Хоть сервис и платный, зато СМС-ки приходят чуть ли не мгновенно.

              Дима.

              PS. Чуть не забыл. В subject и правда не стоит добавлять длинных фраз при отправке через этот скрипт (где бы прочитать конкретику про разрешенную длину subj?). {STATUS}, т.е. ОК/PROBLEM прокатывает, а {TRIGGER.NAME}:{STATUS} уже нет.

              Comment

              • Flegel
                Member
                • Nov 2009
                • 42

                #22
                Да, совсем забыл указать версию PHP !

                PHP 5.3.1-dev (cli) (built: Sep 24 2010 11:12:52)
                Copyright (c) 1997-2009 The PHP Group
                Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies
                with XCache v1.3.0, Copyright (c) 2005-2009, by mOo
                При ./configure необходимо включать поддержку bcmath (--enable-bcmath)
                Мне кажется, что 755 для этих двух php-скриптов сильно излишне. Ну, только если чтобы заведомо не грешить в эту сторону когда не работает. Ведь один из них запускается как параметр в командной строке PHP, а второй и вообще по include добавляется в первый.
                Верно. Такие разрешения я указал намеренно, чтобы избежать возможных проблем при тестировании скриптов.

                Спасибо! Удобный скриптик получился. Хоть сервис и платный, зато СМС-ки приходят чуть ли не мгновенно.
                Пожалуйста! Сервис действительно надежный, SMS приходят мгновенно

                PS. Чуть не забыл. В subject и правда не стоит добавлять длинных фраз при отправке через этот скрипт (где бы прочитать конкретику про разрешенную длину subj?). {STATUS}, т.е. ОК/PROBLEM прокатывает, а {TRIGGER.NAME}:{STATUS} уже нет.
                Уверен, что это ограничение сотовых операторов. Опытным путём выяснил, что в поле Subj можно вписывать не более 10 символов
                Обычно я указываю на каком ресурсе возникла проблема, а уже всю остальную информацию передаю в Body

                Comment

                • energy
                  Junior Member
                  • Nov 2010
                  • 1

                  #23
                  как я понимаю нужно подключение к gateway, вот простой скрипт отправки уже давно в интернете лежит

                  PHP Code:
                  <?
                  /*
                   Simple and easy for modification, PHP script for SMS sending through HTTP with you own Sender ID and delivery reports. 
                   You just have to type your account information on www.2-waysms.com and upload file on server.
                  */
                  ?>

                  <html>
                  <head>
                  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                  <title>SMSER</title>
                  <style type="text/css">
                  body{
                      font-family:"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif; 
                      font-size:12px;
                  }
                  p, h1, form, button{border:0; margin:0; padding:0;}
                  .spacer{clear:both; height:1px;}
                  /* ----------- My Form ----------- */
                  .myform{
                      margin:0 auto;
                      width:300px;
                      padding:14px;
                  }
                  /* ----------- stylized ----------- */
                      #stylized{
                          border:solid 2px #b7ddf2;
                          background:#ebf4fb;
                      }
                      #stylized h1 {
                          font-size:14px;
                          font-weight:bold;
                          margin-bottom:8px;
                      }
                      #stylized p{
                          font-size:11px;
                          color:#666666;
                          margin-bottom:20px;
                          border-bottom:solid 1px #b7ddf2;
                          padding-bottom:10px;
                      
                  }
                      </style> 
                  </head>

                  <body>
                  <?

                      switch ($option) {

                      case sendsms:
                          if ($text == "") { echo "Error!<br>Text not entered<br><a href=\"javascript:history.back(-1)\">Go Back</a>"; die; } else { }
                          if ($to == "") { echo "Error!<br>Number not entered<br><a href=\"javascript:history.back(-1)\">Go Back</a>"; die; } else { }

                          $url = "http://www.2-waysms.com/sms.php";
                          $postfields = array ("text" => "$text", // do not need to change
                          "to" => "$to", // do not need to change
                          "id" => "*****", // you ID in www.2-waysms.com accout
                          "sec" => "****************************"); // your secret code in www.2-waysms.com account
                          if (!$curld = curl_init()) {
                          echo "Could not initialize cURL session.";
                          exit;
                          }
                          curl_setopt($curld, CURLOPT_POST, true);
                          curl_setopt($curld, CURLOPT_POSTFIELDS, $postfields);
                          curl_setopt($curld, CURLOPT_URL, $url);
                          curl_setopt($curld, CURLOPT_RETURNTRANSFER, true);
                          $output = curl_exec($curld);
                          curl_close ($curld);
                          $out = explode('|',$output);

                          echo "Message Status: $out[1]"; 

                          //Header("Location: $PHP_SELF");
                      break;

                      default:

                      echo "<div id=\"stylized\" class=\"myform\">"
                         ."<h1>Send Sms</h1>"
                         ."<form method=post action=\"$PHP_SELF?option=sendsms\">"
                         ."<table border=\"0\">"
                         ."<tr>"
                           ."<td>Number</td>"
                           ."<td><input type=\"text\" name=\"to\"></td>"
                         ."</tr>"
                         ."<tr>"
                           ."<td>Message</td>"
                           ."<td><textarea rows=\"4\" cols=\"25\" name=\"text\"></textarea></td>"
                         ."</tr>"
                         ."<tr>"
                           ."<td>&nbsp;</td>"
                           ."<td><input type=submit name=submit value=Send>"
                           ."<div class=\"spacer\"></div></td>"
                         ."</tr>"
                         ."</table>"
                         ."</form>"
                      ."</div>";


                      }

                  ?>
                  </body>
                  </html>

                  Comment

                  • Badisoft
                    Member
                    • Nov 2010
                    • 94

                    #24
                    Originally posted by Flegel
                    Пожалуйста! Сервис действительно надежный, SMS приходят мгновенно
                    Я таки остановился на бесплатной отправке SMS через гейт емейл-смс своего сотового провайдера. Как ни странно, но при отправке через SMTP mail.ru, а не через SMTP своего провайдера SMS-ки стали приходить так же почти мгновенно. Аутентификацию решил скриптом на базе имеющейся в репозитории Центоса программы email (отправлялка писем из командной строки, умеет SMTP-аутентификацию), а независимость от серверного окружения втыканием в попу серверу GPRS-свистка. Т.е. (образно) route add smtp.mail.ru gw ppp0. Теперь SMS-ки бесплатны и от работоспособности остального конторского окружения не зависят, лишь бы 220в на заббикс-сервере было.

                    Дима.

                    PS. Вдогонку, вдруг кому интересно более подробно:

                    1. /home/zabbix/bin/sendalert
                    -------------------------
                    #!/bin/sh
                    export emailto=$1
                    export body=$2
                    export subject=$3
                    echo $body | email -s "$subject" $emailto
                    --------------------------

                    2. email:
                    Summary : A command line SMTP client that's simple
                    URL : http://www.cleancode.org/projects/email/
                    License : GPL

                    /etc/email.conf
                    --------------------------
                    # это изменения относительно дефолтового конфига /etc/email.conf, но
                    # все эти опции можно задать из командной строки и вообще конфиг не трогать.
                    #
                    SMTP_SERVER = 'smtp.mail.ru'
                    SMTP_PORT = '25'
                    MY_NAME = 'ZabbixAlert'
                    MY_EMAIL = '[email protected]'
                    SMTP_AUTH = 'LOGIN'
                    SMTP_AUTH_USER = [email protected]
                    SMTP_AUTH_PASS = 1234567890
                    #VCARD = "~/dean.ldif"
                    --------------------------

                    3. на mail.ru создан аккаунт [email protected] c паролем 1234567890

                    4. на http://habrahabr.ru/blogs/sysadm/81630/ описано, как на билайне включить бесплатный гейт email2sms.
                    Cобственно, вся остальная идея взята тоже оттуда.

                    5. на mail.ru в ящике [email protected] настраиваем автоудаление ответов Билайна об успешной доставке SMS.

                    PPS. [email protected] и пароль 1234567890 выдуманы для примера.
                    Last edited by Badisoft; 27-11-2010, 07:25.

                    Comment

                    • Salagin
                      Member
                      • Dec 2010
                      • 35

                      #25
                      Originally posted by Badisoft
                      Я таки остановился на бесплатной отправке SMS через гейт емейл-смс своего сотового провайдера. Как ни странно, но при отправке через SMTP mail.ru, а не через SMTP своего провайдера SMS-ки стали приходить так же почти мгновенно. Аутентификацию решил скриптом на базе имеющейся в репозитории Центоса программы email (отправлялка писем из командной строки, умеет SMTP-аутентификацию), а независимость от серверного окружения втыканием в попу серверу GPRS-свистка. Т.е. (образно) route add smtp.mail.ru gw ppp0. Теперь SMS-ки бесплатны и от работоспособности остального конторского окружения не зависят, лишь бы 220в на заббикс-сервере было.

                      Дима.

                      PS. Вдогонку, вдруг кому интересно более подробно:

                      1. /home/zabbix/bin/sendalert

                      2. email:

                      3. на mail.ru создан аккаунт [email protected] c паролем 1234567890

                      4. на http://habrahabr.ru/blogs/sysadm/81630/ описано, как на билайне включить бесплатный гейт email2sms.

                      5. на mail.ru в ящике [email protected] настраиваем автоудаление ответов Билайна об успешной доставке SMS.
                      Мне непонятно, зачем тогда такой огород?
                      У нас отсылаются смс из заббикса на билайн - ящики типа <номер-телефона>@beemail.ru и на мегафон, с помощью средства передачи Email, никаких стронних скриптов. Да, бывают иногда запаздывания, но тут, имхо, дело не в скорости доставки почты.

                      Comment

                      • Badisoft
                        Member
                        • Nov 2010
                        • 94

                        #26
                        Originally posted by Salagin
                        Мне непонятно, зачем тогда такой огород?
                        У нас отсылаются смс из заббикса на билайн - ящики типа <номер-телефона>@beemail.ru и на мегафон, с помощью средства передачи Email, никаких стронних скриптов.
                        Заббикс не умеет отсылать почту на СМТП-сервер с авторизацией. Т.е. либо у вас провайдерский сервер без авторизации (что бывает, но редкость), либо ваш заббикс отсылает почту на ваш же мэйл-сервер, что совершенно лишний шаг и точка ненадежности. Куда заббикс отошлет сообщение о том, что упал ваш мэйл-сервер? На упавший мэйл-сервер?

                        Этот скрипт позволяет отослать сообщение сразу на внешний СМТП-сервер с авторизацией. Более того, лично у меня заббиксу в попу воткнут ГСМ-свисток и маршрут на smtp.mail.ru настроен через него, т.е. сервер автономен и для отправки сообщений не используется ничего из конторской сетевой структуры.

                        Средство передачи Емейл я тоже использую, но есть у него некоторые недостатки.

                        Originally posted by Salagin
                        Да, бывают иногда запаздывания, но тут, имхо, дело не в скорости доставки почты.
                        Запаздывания как раз совершенно не проблема, хотя она есть. Это легко решается оправкой СМС-ок не через бесплатный билайн-гейт, а через платный (89копеек), который описан в этом же треде. Там СМС-ки приходят в течение нескольких секунд. Раньше, чем обновляется экран в веб-морде заббикса .

                        Пять СМС-ок там бесплатно, хватит, чтобы настроить и попробовать, а дальше можно положить 100руб (с того же телефона билайн) и использовать этот путь для совсем уж авральных событий. У меня и бесплатные еще не кончились .

                        Дима.

                        Comment

                        • Salagin
                          Member
                          • Dec 2010
                          • 35

                          #27
                          Originally posted by badisoft
                          Заббикс не умеет отсылать почту на СМТП-сервер с авторизацией. Т.е. либо у вас провайдерский сервер без авторизации (что бывает, но редкость), либо ваш заббикс отсылает почту на ваш же мэйл-сервер, что совершенно лишний шаг и точка ненадежности. Куда заббикс отошлет сообщение о том, что упал ваш мэйл-сервер? На упавший мэйл-сервер?

                          Дима.
                          Ну, я исхожу из того, что заббикс не ставят ради мониторинга домашнией сетки :-) Обычно, в крупной сети есть свой почтовик. У меня на нескольких установках везде есть почтарь. Падение мейл сервера - вещь такая же неприятная как и падение заббикс сервера, поэтому резервируется все что можно.
                          Вообще, вопрос конечно о том, насколько серьезен уровень инсталяции и сколько денег ты готов в это вложить.
                          А так, да, если сервер с авторизацией на смтп, отправку делать скриптом....

                          Comment

                          • dyuha85
                            Member
                            • Aug 2012
                            • 41

                            #28
                            я попробовал ваши изменения в скрипте, он выдал следующее:

                            ./run.php 998ХХХХХХХХ test test

                            Array
                            (
                            )
                            PHP Notice: Undefined index: t in /home/ebs/zabbix/run.php on line 9
                            PHP Notice: Undefined index: s in /home/ebs/zabbix/run.php on line 9
                            PHP Notice: Undefined index: b in /home/ebs/zabbix/run.php on line 9

                            0, message param is missing


                            помогите пожалуйста

                            спасибо

                            Comment

                            • Flegel
                              Member
                              • Nov 2009
                              • 42

                              #29
                              dyuha85
                              Запостите пожалуйста итоговый вариант скрипта run.php - попробуем разобраться что с ним не так.

                              Comment

                              • dyuha85
                                Member
                                • Aug 2012
                                • 41

                                #30
                                #!/usr/bin/php
                                <?php

                                include('send_sms.php');

                                $options= getopt("t:s:b:");
                                print_r($options);

                                list($sms_id, $error)=Sms::send($options['t'], $options['s'], $options['b'], 1);
                                echo "\n$sms_id, $error\n";

                                ?>


                                мой вариант скрипта

                                спасибо

                                Comment

                                Working...