Страница 1 из 3

Перезагрузка рутера через telnet

Добавлено: Чт окт 06, 2016 9:09 pm
EvgenyG
Подскажите, можно ли подключиться к рутеру Zyxel Keenetic II в локальной сети через telnet средствами MajorDoMo?
Хочу запускать команду на перезагрузку при отсутствие ping
https://zyxel.ru/kb/2916/

Re: Перезагрузка рутера через telnet

Добавлено: Чт окт 06, 2016 9:45 pm
eygen
Как то так...
viewtopic.php?f=6&t=2986&start=20

Re: Перезагрузка рутера через telnet

Добавлено: Пн окт 17, 2016 7:12 pm
Varrcan
EvgenyG писал(а):Подскажите, можно ли подключиться к рутеру Zyxel Keenetic II в локальной сети через telnet средствами MajorDoMo?
Хочу запускать команду на перезагрузку при отсутствие ping
https://zyxel.ru/kb/2916/
я у себя сделал так:
1 В корне создал файл /var/www/restart_router.sh

Код: Выделить всё

#!/bin/bash
(
sleep 5
echo "admin"
sleep 1
echo "password"
sleep 1
echo "system reboot"
sleep 1
echo "exit"
) | telnet 192.168.0.1
значения смените на свои.

2 В МД создал сценарий, в котором прописал дергалку этого файлика. Можно сделать примерно так:

Код: Выделить всё

say('Подключение к интернету отсутствует более трех минут. Попробую перезагрузить роутер...');
exec('/var/www/restart_router.sh');
 


3 Состояние интернета проверяю пингом к яндексу (Устройства Online):

Действие при переходе в Offline:

Код: Выделить всё

SetTimeOut("restartRouter","runScript('restartRouter');", 180); 
Действие при переходе в Online: (Это если вдруг интернет восстановился за 3 минуты)

Код: Выделить всё

ClearTimeOut("restartRouter"); 

Re: Перезагрузка рутера через telnet

Добавлено: Пн окт 17, 2016 7:19 pm
Varrcan
Может кому пригодится.
На роутере TP-LINK TL-WR740N перезагружал подобным скриптом, ничего проще не смог найти:

Код: Выделить всё

say('Внимание! Маршрутизатор перезагружается!');
$t = 'http://192.168.0.1/userRpm/SysRebootRpm.htm?Reboot=%D0%9F%D0%B5%D1%80%D0%B5%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $t);
curl_setopt($ch, CURLOPT_USERPWD, 'admin:password');
curl_setopt($ch, CURLOPT_REFERER, 'http://192.168.0.1/userRpm/SysRebootRpm.htm');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/17.0 Firefox/17.0');
curl_setopt($ch, CURLOPT_ENCODING, 'utf-8');
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_exec($ch);        
curl_close($ch);
*** Сообщение запрещено. Сообщение похоже на спам. ***

Re: Перезагрузка рутера через telnet

Добавлено: Вт ноя 15, 2016 1:05 pm
portos
Varrcan писал(а):
EvgenyG писал(а):Подскажите, можно ли подключиться к рутеру Zyxel Keenetic II в локальной сети через telnet средствами MajorDoMo?
Хочу запускать команду на перезагрузку при отсутствие ping
https://zyxel.ru/kb/2916/
я у себя сделал так:
1 В корне создал файл /var/www/restart_router.sh

Код: Выделить всё

#!/bin/bash
(
sleep 5
echo "admin"
sleep 1
echo "password"
sleep 1
echo "system reboot"
sleep 1
echo "exit"
) | telnet 192.168.0.1
значения смените на свои.

2 В МД создал сценарий, в котором прописал дергалку этого файлика. Можно сделать примерно так:

Код: Выделить всё

say('Подключение к интернету отсутствует более трех минут. Попробую перезагрузить роутер...');
exec('/var/www/restart_router.sh');


3 Состояние интернета проверяю пингом к яндексу (Устройства Online):

Действие при переходе в Offline:

Код: Выделить всё

SetTimeOut("restartRouter","runScript('restartRouter');", 180);
Действие при переходе в Online: (Это если вдруг интернет восстановился за 3 минуты)

Код: Выделить всё

ClearTimeOut("restartRouter");

Можно пример в картинках для тупых и у кого не чего не получилось.

Re: Перезагрузка рутера через telnet

Добавлено: Вт ноя 15, 2016 2:31 pm
savenko_egor
не вопросПоказать
Изображение
Изображение
Изображение

Re: Перезагрузка рутера через telnet

Добавлено: Ср ноя 16, 2016 5:43 pm
portos
Ну в принципе все так и делал. Единственно вместо домена указал хост.
В результат и с доменным именем работает с просто ip адресом нет. Статус переходит в офлайн но команда не выполняется.

Re: Перезагрузка рутера через telnet

Добавлено: Ср ноя 16, 2016 5:53 pm
savenko_egor
Попробуйте дебажить. Например добавьте say в какой-то из статусов для того чтобы понять работает или нет.
Но скорее всего у Вас PHP работает от пользователя который не имеет доступ к скрипту. Даю 99% что проблема именно в этом. Потому проверьте собственника и права на sh скрипт и проверьте от кого запускается скрипты MDM.

Re: Перезагрузка рутера через telnet

Добавлено: Ср ноя 16, 2016 8:00 pm
portos
Права на каталог WWW у root и www-data полный доступ.
Скрипт работает когда в поле хост(адрес) пишешь хост к примеру www.ru а не ip адрес ххх.ххх.ххх.ххх
То есть это баг модуля pinghosts

Re: Перезагрузка рутера через telnet

Добавлено: Ср ноя 16, 2016 8:12 pm
savenko_egor
Так может у Вас сервер не преобразовывает домены в IP. Покажите вывод:

Код: Выделить всё

cat /etc/resolv.conf

Код: Выделить всё

ping 8.8.8.8

Код: Выделить всё

ping ya.ru
*** Сообщение запрещено. Сообщение похоже на спам. ***