Что за модуль "Пингонлайн"?tarasfrompir писал(а): ↑Пт июл 26, 2019 7:14 pmНу вот, все испортил...workpage писал(а): ↑Пт июл 26, 2019 7:07 pmВобщем написал такой вот сценарий. У каждого устройства, которое будем проверять, надо добавить 2 дополнительных свойства. Ping и ip. В ping скрипт будет вписывать 1 или 0 в случае изменения, в ip надо записать ip адрес. С свойству Ping привязывем новый метод и он уже делает оповещения.
Время выполнения данного сценария, если все устройства online - менее 10 секунд!!! (76 ip адресов)
Воткнул запуск сценария в OnNewMinite
runScript('Ping');
Во первых - зачем делать все тоже что делает модуль, пингонлайн...
во вторых зачем грузить систему дополнительными данными ? ну хз не знаю...
в третих молодец что сделал...
ну и вроде все мысли кончились
Пингуем устройства. Как быть? Устройства Online.
Модератор: immortal
-
- Сообщения: 438
- Зарегистрирован: Чт авг 24, 2017 9:38 am
- Благодарил (а): 51 раз
- Поблагодарили: 86 раз
- Контактная информация:
Re: Пингуем устройства. Как быть? Устройства Online.
- tarasfrompir
- Сообщения: 3216
- Зарегистрирован: Ср мар 02, 2016 8:18 pm
- Откуда: Украина Пирятин
- Благодарил (а): 223 раза
- Поблагодарили: 815 раз
Re: Пингуем устройства. Как быть? Устройства Online.
имелся ввиду модуль устройства онлайн...workpage писал(а): ↑Пт июл 26, 2019 7:17 pmЧто за модуль "Пингонлайн"?tarasfrompir писал(а): ↑Пт июл 26, 2019 7:14 pmНу вот, все испортил...workpage писал(а): ↑Пт июл 26, 2019 7:07 pmВобщем написал такой вот сценарий. У каждого устройства, которое будем проверять, надо добавить 2 дополнительных свойства. Ping и ip. В ping скрипт будет вписывать 1 или 0 в случае изменения, в ip надо записать ip адрес. С свойству Ping привязывем новый метод и он уже делает оповещения.
Время выполнения данного сценария, если все устройства online - менее 10 секунд!!! (76 ip адресов)
Воткнул запуск сценария в OnNewMinite
runScript('Ping');
Во первых - зачем делать все тоже что делает модуль, пингонлайн...
во вторых зачем грузить систему дополнительными данными ? ну хз не знаю...
в третих молодец что сделал...
ну и вроде все мысли кончились
Спасибо нам ПОМОЖЕТ..!
-
- Сообщения: 315
- Зарегистрирован: Вс май 20, 2018 9:27 am
- Благодарил (а): 160 раз
- Поблагодарили: 29 раз
Re: Пингуем устройства. Как быть? Устройства Online.
Подскажите пожалуйста как пинговать "ip" + "port"? Мне это нужно, что бы пинговать vpn.
я тут экспериментировал с методом из этой ветки но, все печально!
и так пробовал, тоже не работает.
Или может кто "ткнет меня носом" в строенную функцию "ping"? я надеюсь если увижу код то, может сам догадаюсь как "прикрутить" порт?
я тут экспериментировал с методом из этой ветки но, все печально!
Код: Выделить всё
$ipport = $this->getProperty('ip') . ':' . $this->getProperty('port') ;
$online = ping($ipport);
...
Код: Выделить всё
$online = ping($this->getProperty('ip'),$this->getProperty('port'));
...
- xor
- Сообщения: 2039
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
- Благодарил (а): 286 раз
- Поблагодарили: 629 раз
Re: Пингуем устройства. Как быть? Устройства Online.
Yashalta писал(а): ↑Вт окт 15, 2019 9:49 pmПодскажите пожалуйста как пинговать "ip" + "port"? Мне это нужно, что бы пинговать vpn.
я тут экспериментировал с методом из этой ветки но, все печально!и так пробовал, тоже не работает.Код: Выделить всё
$ipport = $this->getProperty('ip') . ':' . $this->getProperty('port') ; $online = ping($ipport); ...
Или может кто "ткнет меня носом" в строенную функцию "ping"? я надеюсь если увижу код то, может сам догадаюсь как "прикрутить" порт?Код: Выделить всё
$online = ping($this->getProperty('ip'),$this->getProperty('port')); ...
\htdocs\lib\general.class.php
Код: Выделить всё
/**
* Ping host
* @param mixed $host Host address
* @return bool
*/
function ping($host)
{
if (IsWindowsOS())
exec(sprintf('ping -n 1 %s', escapeshellarg($host)), $res, $rval);
elseif (substr(php_uname(), 0, 7) === "FreeBSD")
exec(sprintf('ping -c 1 -t 5 %s', escapeshellarg($host)), $res, $rval);
else
exec(sprintf('ping -c 1 -W 5 %s', escapeshellarg($host)), $res, $rval);
return $rval === 0 && preg_match('/ttl/is', join('', $res));
}
- Рейтинг: 1.16%
win10 connect https://connect.smartliving.ru/profile/303
- Lerych
- Сообщения: 191
- Зарегистрирован: Чт дек 14, 2017 8:46 pm
- Откуда: Московская область, Серпухов
- Благодарил (а): 79 раз
- Поблагодарили: 24 раза
Re: Пингуем устройства. Как быть? Устройства Online.
Приветствую!Yashalta писал(а): ↑Вт окт 15, 2019 9:49 pmПодскажите пожалуйста как пинговать "ip" + "port"? Мне это нужно, что бы пинговать vpn.
я тут экспериментировал с методом из этой ветки но, все печально!и так пробовал, тоже не работает.Код: Выделить всё
$ipport = $this->getProperty('ip') . ':' . $this->getProperty('port') ; $online = ping($ipport); ...
Или может кто "ткнет меня носом" в строенную функцию "ping"? я надеюсь если увижу код то, может сам догадаюсь как "прикрутить" порт?Код: Выделить всё
$online = ping($this->getProperty('ip'),$this->getProperty('port')); ...
Получилось, что хотели? Если да, поделитесь опытом. Я в свою очередь решил пинг с портами через модуль TCP_socket.
viewtopic.php?f=4&t=2750&hilit=TCP_sock ... =30#p98629
-
- Сообщения: 2084
- Зарегистрирован: Пт апр 07, 2017 12:20 pm
- Благодарил (а): 313 раз
- Поблагодарили: 457 раз
Re: Пингуем устройства. Как быть? Устройства Online.
поправилиtarasfrompir писал(а): ↑Вт июл 23, 2019 10:26 pmвообще то есть где то в связи с устройствами проблеммы...кмк...
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
- tarasfrompir
- Сообщения: 3216
- Зарегистрирован: Ср мар 02, 2016 8:18 pm
- Откуда: Украина Пирятин
- Благодарил (а): 223 раза
- Поблагодарили: 815 раз
Re: Пингуем устройства. Как быть? Устройства Online.
Такой старый вопрос - пришлось перечитывать ...Logrus писал(а): ↑Пн окт 28, 2019 11:47 pmпоправилиtarasfrompir писал(а): ↑Вт июл 23, 2019 10:26 pmвообще то есть где то в связи с устройствами проблеммы...кмк...
Так а что было то ?
Спасибо нам ПОМОЖЕТ..!
-
- Сообщения: 315
- Зарегистрирован: Вс май 20, 2018 9:27 am
- Благодарил (а): 160 раз
- Поблагодарили: 29 раз
Re: Пингуем устройства. Как быть? Устройства Online.
После 3-х месячного чтения и разбора примеров по этой книге https://www.programmer-books.com/wp-con ... rd-way.pdfLerych писал(а): ↑Пн окт 28, 2019 10:46 pmПриветствую!
Получилось, что хотели? Если да, поделитесь опытом. Я в свою очередь решил пинг с портами через модуль TCP_socket.
viewtopic.php?f=4&t=2750&hilit=TCP_sock ... =30#p98629
Я состряпал код на PHP, чему несказанно рад т.к. изучал Python! если кто "допилит" мое "творение" буду благодарен хотя, он и в таком виде у меня работает на 5-ку!
Мои требования к коду такие:
1. Клиент, он же "MD" на Rasspberry подключаться к "OpenVPN" если тот в сети! А так как "OpenVPN" у меня дома на Synology то, нужно пинговать как внешний "IP" Synology так и его "port"!
2. Если "OpenVPN" не в сети то, убиваем все возможно запущенные сервисы в названии которых есть "openvpn". Это нужно, что бы могли подключиться если "OpenVPN" появится в сети! Мы не подключимся если у нас будут висеть "мертвые" сервисы "openvpn".
3. Если "OpenVPN" в сети то, пингуем внутреннюю сеть OpenVPN т.к. возможно, что OpenVPN пингуется но, клиент не подключен!
4. Если пингуется "OpenVPN" и нет сети то, подключаемся!
5. Если пингуется "OpenVPN" и внутренняя сеть "OpenVPN" тоже пингуется то, ничего не делаем.
И так в бесконечном цикле. А бесконечный цикл у меня это "crone" на "MD" c такими параметрами */1 * * * * т.е. раз в минуту.
Код
Код: Выделить всё
$host = 'X.X.X.X'; // Впиши сюда свой белый "IP"
$port = XXXX; // Впиши сюда номер порта
$waitTimeoutInSeconds = 1;
function runVPN() {
//echo 'Запускаю OpenVPN! '.date("H:i").'<br>';
exec('/usr/bin/sudo /home/pi/.ovpn/symple_run_ovpn.sh');
}
function killVPN() {
//echo 'Отключаю OpenVPN! '.date("H:i").'<br>';
exec('/usr/bin/sudo /home/pi/scripts/stop_service_vpn.sh');
}
function ping_vpn() {
$waitTimeoutInSeconds = 1;
$vpn_host = "X.X.X.X"; // Впиши сюда "IP" внутренней сети OpenVPN
$vpn_port = 22; // Впиши сюда номер порта
if($fp = fsockopen($vpn_host,$vpn_port,$errCode,$errStr,$waitTimeoutInSeconds)){
//echo 'OpenVPN в сети! '.date("H:i").'<br>';
} else {
//echo 'OpenVPN НЕ в сети, перезапускаю openVPN! '.date("H:i").'<br>';
killVPN();
sleep(3);
runVPN();
}
fclose($fp);
}
// -----------------BODY OF CODE---------------------
if($fp = fsockopen($host,$port,$errCode,$errStr,$waitTimeoutInSeconds)){
//echo 'Synology в сети, проверка связи с VPN! '.date("H:i").'<br>';
ping_vpn();
} else {
//echo 'Synology НЕ в сети: '.date("H:i").'<br>';
killVPN();
}
fclose($fp);
код "symple_run_ovpn.sh". Это просто команда для запуска клиента "openvpn" на linux.
Код: Выделить всё
#!/bin/bash
openvpn --config /home/pi/.ovpn/Raspberry.ovpn
код stop_service_vpn.sh Скрипт просто находит все запущенные сервисы которые имеют в названии "openvpn" и убивает их.
Код: Выделить всё
#!/bin/bash
PID=`ps -eaf | grep openvpn | grep -v grep | awk '{print $2}'`
if [[ "" != "$PID" ]]; then
echo "killing $PID"
kill -9 $PID
fi
a) Не нравиться то, что код написан на PHP а запускает "Bash" скрипты! Правильно было бы все написать на PHP но, я еще только учусь...
б) Переменные функции "ping_vpn" грамотнее было бы, перечислить непосредственно в названии функции в скобках а не так как это сделал я! Я конечно пробовал указать правильно но, то ли синтаксис нарушал то ли в не правильной последовательности писал, писало ошибку! Я и забил, нужно изучать PHP!
PS - Клиент "MD" в селе а cсервер "OpenVPN" в городе.
- Рейтинг: 1.16%