Привет, подскажите как настроить отправку сообщений по смс через интернет шлюзы. В стандартной поставке нет, а очень хотелось бы.
Ad Widget
Collapse
SMS sent
Collapse
X
-
можно отправлять например таким скриптом. Ложишь его в /home/zabbix/bin/sms.php, добавляешь в Администрирование - Типы средств передачи как сценарий (указывая sms.php, а не полный путь). Естественно в коде нужно указать свои пароль и ящик, и тогда будет счастье
:
P.S. Скрипт поверять командой /home/zabbix/bin/sms.php [email protected] subjectCode:#!/usr/local/bin/php <?php $message = ""; $to = $argv[1]; $address = 'mysuperdomen.com'; // адрес smtp-сервера $port = 25; // порт (стандартный smtp - 25) $login = '[email protected]'; // логин к ящику $pwd = 'mysuperlongpassword'; // пароль к ящику $from = '[email protected]'; // адрес отправителя $subject = date("d.m H:i")." ".$argv[2]; // тема сообщения try { // Создаем сокет $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket < 0) { throw new Exception('socket_create() failed: '.socket_strerror(socket_last_error())."\n"); } // Соединяем сокет к серверу // echo 'Connect to \''.$address.':'.$port.'\' ... '; $result = socket_connect($socket, $address, $port); if ($result === false) { throw new Exception('socket_connect() failed: '.socket_strerror(socket_last_error())."\n"); } else { // echo "OK\n"; } // Читаем информацию о сервере read_smtp_answer($socket); // Приветствуем сервер write_smtp_response($socket, 'EHLO eqvia.com'); read_smtp_answer($socket); // ответ сервера // Делаем запрос авторизации write_smtp_response($socket, 'AUTH LOGIN'); read_smtp_answer($socket); // ответ сервера // Отравляем логин write_smtp_response($socket, base64_encode($login)); read_smtp_answer($socket); // ответ сервера // Отравляем пароль write_smtp_response($socket, base64_encode($pwd)); read_smtp_answer($socket); // ответ сервера // Задаем адрес отправителя write_smtp_response($socket, 'MAIL FROM:<'.$from.'>'); read_smtp_answer($socket); // ответ сервера // Задаем адрес получателя write_smtp_response($socket, 'RCPT TO:<'.$to.'>'); read_smtp_answer($socket); // ответ сервера // Готовим сервер к приему данных write_smtp_response($socket, 'DATA'); read_smtp_answer($socket); // ответ сервера // Отправляем данные $message = "To: $to\r\n$message"; // добавляем заголовок сообщения "адрес получателя" $message = "Subject: $subject\r\n$message"; // заголовок "тема сообщения" // $message = "Content-type: text/html\r\n".$message; write_smtp_response($socket, $message."\r\n."); read_smtp_answer($socket); // ответ сервера // Отсоединяемся от сервера write_smtp_response($socket, 'QUIT'); read_smtp_answer($socket); // ответ сервера } catch (Exception $e) { // echo "\nError: ".$e->getMessage(); } if (isset($socket)) { socket_close($socket); } // Функция для чтения ответа сервера. Выбрасывает исключение в случае ошибки function read_smtp_answer($socket) { $read = socket_read($socket, 1024); if ($read{0} != '2' && $read{0} != '3') { if (!empty($read)) { throw new Exception('SMTP failed: '.$read."\n"); } else { throw new Exception('Unknown error'."\n"); } } } // Функция для отправки запроса серверу function write_smtp_response($socket, $msg) { $msg = $msg."\r\n"; socket_write($socket, $msg, strlen($msg)); } ?>
Last edited by xara; 23-10-2009, 14:22. -
я кажется создавал его вручную. Хотя старожилы наверняка знают лучшее решение.
тип средства передачи - сценарий.
Comment
-
[26-Oct-2009 17:53:45] PHP Parse error: syntax error, unexpected '{' in .../html/zabbix/bin/sms.php on line 16
Вот, к сожалению с какой проблемой столкнулся. Однако я бы предпочел использовать старндартную функцию mail у bash, не подскажите что за параметры передаются заббиксом при попытке отправить скриптом?
То есть, с какими параметрами вызывает самопальный скрипт заббикс. У Вас указано, что php скрипт берет адрес отправителя как 1-й аргумент, но тем не менее, в заббиксе я прямо не указываю мой ящик при конфигурировании скрипта.Comment
-
Может у Вас стоит 4-ая ветка PHP?
Скрипт прописывается сначала в Администрирование - Типы средств передачи,Однако я бы предпочел использовать старндартную функцию mail у bash, не подскажите что за параметры передаются заббиксом при попытке отправить скриптом?
То есть, с какими параметрами вызывает самопальный скрипт заббикс. У Вас указано, что php скрипт берет адрес отправителя как 1-й аргумент, но тем не менее, в заббиксе я прямо не указываю мой ящик при конфигурировании скрипта.
а после этого в Администрирование - пользователи - "выбор отдельного пользователя" - средство передачи - добавить. При этом уже указывается тип sms(или как вы его назвали), в поле "Отправлять" - емейл sms-гейта (что-то вроде [email protected]). Именно на него будет отправлять письма заббикс.
В отличии от простой отправки письма на е-мейл, данный скрипт не отправляет текст письма (так как в заголовке и так вся инфа написана), а так-же в заголовок добавляет дату отправки (вида 29.10 13:49). Но самое важное - оно отправляет письмо не от локального ящика - а от имени удалённого, размещенного на другом сервере. Естественно для этого ему приходится проходить smtp авторизацию (как и любому почтовому клиенту).
Стандартная unix-программа mail по моему в принципе ничего такого сделать не сможет. Параметры, получаемые скриптом в принципе очевидны - 1-ый e-mail (то что написано в поле "Отправлять", у пользователя, в свойствах данного "скрипта"), а второй - заголовок письма.
P.S. Текст письма наверное идёт третьим аргументом. Ручаться не стану - не проверял
Last edited by xara; 29-10-2009, 16:51.Comment
-
Спасибо большое за Ваш подробный ответ. PHP5, но я пошел по кратчайшему пути и сделал отправку сообщений на джаббер, затем на сервере установил mcab, перехватываю все сообщения поступающие на джаббер. Правда mailtosms у операторов в ДС не работают, поэтому отправляю через форму отправки смс на сайте используя антикапчу. Пока что работает плохо, но думаю скоро отлажу.
Если нужны скрипты, могу поделиться в личку. Стоимость 1000 смс становится порядка 1$. А то платные смс гейты это как-то в 30 раз дороже.Comment
Comment