Добрый день, уважаемые читатели моего скромного блога.
Совсем недавно я написал 2 статьи на тему мониторинга локальных устройств и внешних узлов для роутеров MikroTik на базе RouterOS и рассказал о схеме грамотного мониторинга: Микротик <=> Сервер. Сегодня речь пойдет о мониторинге домашнего интернета с вашего сервера VDS/VPS с оповещением по СМС.
Все, кто говорят что нельзя выполнять пинг через PHP скрипты - ошибаются. Скрипт написан на языке PHP и выполняет пинг вашего внешнего IP адреса домашнего интернета, разумеется, если внешний IP у вас есть.
Рассмотрим скрипт по частям:
1 2 3 |
$downsms="Home+inet+is+DOWN+".date("H:i:s"); $upsms="Home+inet+is+UP+".date("H:i:s"); $checkdns = exec("ping -c 1 8.8.8.8"); |
Здесь мы объявили шаблоны текстов СМС и указали Google DNS для проверки доступности интернета на сервере (мало ли что может случиться) и сразу же выполнили пинг.
PHP скрипт будет проверять наличие интернета дома только при наличии интернета на сервере, за что отвечает это условие:
1 |
if ($checkdns!="") |
1 2 3 4 5 6 7 8 9 |
$checkhome = exec("ping -c 1 0.0.0.0"); if ($checkhome=="") { if (!file_exists("homedown.txt")) { file_put_contents("homedown.txt",""); file_get_contents("http://sms.ru/sms/send?api_id=YOUR_API_KEY&to=79012345678&text=".$downsms); } } |
Здесь мы выполняем ping внешнего IP адреса вашего домашнего интернета и если пинг не проходит, создаем файл, по которому скрипт в дальнейшем просто будет понимать что в предыдущих его запусках интернета дома уже не было и не будет снова посылать СМС. Кстати вы можете изменить количество отправляемых пингом пакетов, я указал 1, потому что скрипт не очень быстро выполняется в браузере. Просто замените цифру 1 перед IP адресом.
Затем отправляется СМС на ваш номер телефона об отсутствии домашнего интернета. Для отправки СМС я использую сервис SMS.RU, поскольку он дает возможность использовать API и отправлять 5 бесплатных СМС в день на свой номер (который использовали при регистрации).
Для отправки SMS в тексте PHP скрипта вам нужно заменить YOUR_API_KEY на ваш API ключ из личного кабинета SMS.RU, а 79012345678 заменить на ваш номер телефона.
1 2 3 4 5 6 7 8 |
else { if (file_exists("homedown.txt")) { unlink("homedown.txt"); file_get_contents("http://sms.ru/sms/send?api_id=YOUR_API_KEY&to=79012345678&text=".$upsms); } } |
В этой части кода если домашний интернет снова стал доступен, удаляется созданный файл и отправляется СМС. Что тут заменить для отправки СМС вы уже знаете.
Полный текст скрипта:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<?php $downsms="Home+inet+is+DOWN+".date("H:i:s"); $upsms="Home+inet+is+UP+".date("H:i:s"); $checkdns = exec("ping -c 1 8.8.8.8"); if ($checkdns!="") { $checkhome = exec("ping -c 1 0.0.0.0"); if ($checkhome=="") { if (!file_exists("homedown.txt")) { file_put_contents("homedown.txt",""); file_get_contents("http://sms.ru/sms/send?api_id=YOUR_API_KEY&to=79012345678&text=".$downsms); } } else { if (file_exists("homedown.txt")) { unlink("homedown.txt"); file_get_contents("http://sms.ru/sms/send?api_id=YOUR_API_KEY&to=79012345678&text=".$upsms); } } } ?> |
Чуть не забыл - передача текста СМС с пробелами не поддерживается, поэтому в переменных $downsms и $upsms вместо пробелов пишите знак "+" как сделано в моем скрипте. При этом СМС на ваш телефон будет приходить с пробелами вместо знаков "+".
PHP скрипт следует поставить в крон на выполнение каждую минуту или любой другой удобный вам промежуток времени.