Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.04.2012, 20:27
Аватар для Klassenas
Klassenas Klassenas вне форума
Новичок
 
Регистрация: 25.05.2009
Адрес: Казахстан, Павлодар
Сообщения: 87
Версия Delphi: Rad Studio 2010
Репутация: 1570
По умолчанию Перезагрузить роутер

Как написать код, который будет посылать wi-fi роутеру команду перезагрузиться?
__________________
Если ты чего-то не знаешь, значит есть шанс научиться чему-то новому
Ответить с цитированием
  #2  
Старый 09.04.2012, 20:54
ApxaHGe1 ApxaHGe1 вне форума
Активный
 
Регистрация: 08.04.2008
Адрес: Нижний новгород
Сообщения: 311
Репутация: 38
По умолчанию

Руками, думаю через телнет... роутер поддерживает общение через телнет
Ответить с цитированием
  #3  
Старый 09.04.2012, 21:26
Аватар для Klassenas
Klassenas Klassenas вне форума
Новичок
 
Регистрация: 25.05.2009
Адрес: Казахстан, Павлодар
Сообщения: 87
Версия Delphi: Rad Studio 2010
Репутация: 1570
По умолчанию

А если руки далеко?
Суть проблемы такая: Падает интернет, но модем-роутер об этом не догадывается и сам не переподключается. Я пишу прогу, которая будет через определённый интервал времени пинговать гугл, и если ответа нет, значит инет отрубился и надо рестартнуть модем. С пингом я разобрался. Пингует, возвращает результат. (Теперь разобраться бы с файрволом, а то блокирует, гад такой).
Так что теперь мне нужен код, который пошлёт роутеру команду на перезагрузку.
А то вот ведь геморой: закачку включаю, ухожу куда-нибудь, возвращаюсь, а там уже часа два, как ничего не качается.
__________________
Если ты чего-то не знаешь, значит есть шанс научиться чему-то новому
Ответить с цитированием
  #4  
Старый 09.04.2012, 21:38
Аватар для cotseec
cotseec cotseec вне форума
Активный
 
Регистрация: 16.07.2008
Сообщения: 353
Версия Delphi: D7,TDE06,RAD09
Репутация: 1443
По умолчанию

роутер имеет веб морду, а там, по идее, должна быть кнопка его перезагружающая, остается отправить роутеру по его ip команду такой кнопки
например такая

Последний раз редактировалось cotseec, 09.04.2012 в 21:49.
Ответить с цитированием
  #5  
Старый 10.04.2012, 08:48
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
Восклицание

у меня ADSL модем с Wi-Fi DLink DSL-2600. для смены сессии (переподключение+новый динамический IP) посылаю по telnet (после авторизации естественно):
Код:
echo 3 > /proc/var/fyi/wan/ppp_0_8_35_1/wanup^M
пауза 5 сек.
Цитата:
echo 1 > /proc/var/fyi/wan/ppp_0_8_35_1/wanup^M
^M это #13
8 и 35 это VPI/VCI
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #6  
Старый 11.04.2012, 10:34
Аватар для Klassenas
Klassenas Klassenas вне форума
Новичок
 
Регистрация: 25.05.2009
Адрес: Казахстан, Павлодар
Сообщения: 87
Версия Delphi: Rad Studio 2010
Репутация: 1570
По умолчанию

Отлично, но как это будет выглядеть в Delphi?
Какие-то компоненты нужны или есть системные функции?
Я с telnet пока ещё не успел близко познакомиться.
__________________
Если ты чего-то не знаешь, значит есть шанс научиться чему-то новому

Последний раз редактировалось Klassenas, 11.04.2012 в 10:37.
Ответить с цитированием
  #7  
Старый 11.04.2012, 10:44
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
Восклицание

любой компонент для работы с telnet. но можно и программку tse.exe использовать:

Цитата:
TSE - Telnet Script Executor. Программа - исполнитель telnet сценариев предназначена для автоматизации рутинных процедур по обслуживанию оборудования и программного обеспечения, сбора статистической информации и прочих работ которые могут делаться при помощи программы/протокола telnet. При необходимости программу TSE можно использовать и для доступа к другим сервисам рассчитанным на символьный обмен. Программа является бесплатной (freeware) и поставляется с исходными текстами (на C++). Программа тестировалась в работе под ОС MS Windows 95, 98, NT 4.0. Последнюю версию программы можно скачать по адресу http://home.onego.ru/~loft/_tse.exe С автором программы можно связаться по E-mail: Loft@onego.ru
Программа TSE принимает со стандартного устройства ввода (по умолчанию это консоль)команды, интерпретирует и выполняет их. Список команд и их действия приведен ниже. При своей работе программа выводит на стандартное устройство вывода (по умолчанию это консоль) символы отосланные и полученные от устройства (ПК) к которому она в данный момент подключена по протоколу TCP/IP. При необходимости может быть включена расширенная диагностика или наоборот полностью отключен вывод сообщений.
Программа TSE может принимать следующие параметры командной строки:
tse.exe [options] [parameters] [<scriptfile] [>outputfile]
[options] в качестве префикса может быть использован символ - или /:
-s: молчаливый режим (отключен вывод сообщений)
-d: показывать сообщения расширенной диагностики
-h: показать экран подсказки по использованию программы
[parameters] список параметров командной строки (до 9-ти параметров) которые могут быть использованы в файле сценария. Если параметр начинается с символа - или / то для отличия его от опции необходимо продублировать первый символ: -- или //
[scriptfile] имя файла со сценарием, если отсутствует программа будет ждать ввода команд с консоли
[outputfile] имя файла для вывода информации, если отсутствует программа будет выводить информацию на консоль

Программа TSE читает и выполняет команды построчно. Строки могут заканчиваться как символами с кодом 0D и 0A, так и только одним символом 0A. Сценарий прекращает выполняться в случае если программа дойдет до конца файла (получит символ Ctrl+Z в случае ввода с консоли), будет выполнена команда на прекращение работы или в случае любой ошибки в синтаксисе команд сценария или ошибки выполнения этих команд. Строки начинающиеся с символа ; считаются комментариями. Комбинация с %1 до %9 считается ссылкой на соответствующий параметр командной строки. Если необходимо использовать символ % в тексте для других целей достаточно его продублировать - %%.
Поддерживаются следующие команды:
- rem - строка является комментарием. Пример: rem Connect to router
- open - подключиться к удаленному устройству/ПК. Команда имеет 2 параметра: open <IP-адрес> [TCP-порт]. В качестве адреса может выступать как имя так и непосредственно IP-адрес. TCP-порт числовой номер порта, если отсутствует, то подключение будет произведено к 23-му порту. Пример: open 192.168.0.1
- close - закрывает текущее соединение. Команда не имеет параметров;
- exit - закрывает текущее соединение и прекращает выполнение сценария. Команда не имеет параметров;
- quit - прекращает выполнение сценария, при этом не ожидается закрытия соединения с удаленным устройством. Данную команду полезно использовать при перезагрузке устройства/ПК, когда TCP-сессия все равно уже не может быть корректно закрыта. Команда не имеет параметров;
- waitfor - ожидает получения от подключенного устройства определенных данных. Команда имеет один параметр - символьную строку в "" которую необходимо ожидать. Пример: waitfor "name:"
- transmit - посылает на подключенное устройство данные. Команда имеет один параметр - символьную строку в "" которую необходимо отослать. Пример: transmit "root^M"
- pause - пауза в работе программы на заданное количество секунд. Может быть полезна для ожидания от удаленного устройства обработки посланных данных, например перед закрытием соединения. Команда имеет один параметр - число секунд, которые необходимо ждать. Пример: pause 3

В качестве примера приведен сценарий с именем ciscorld который перезагружает маршрутизатор Cisco Systems. Используется он следующим образом:
tse.exe router user userpass enpass <ciscorld
Где:
router - имя или IP-адрес маршрутизатора
user - имя пользователя для доступа к консоли маршрутизатора
userpass - пароль для доступа к консоли
enpass - пароль для доступа в режим enable

пример скрипта от первоисточника:

Цитата:
;Впишите адрес вашего ротуера вместо 192.168.1.1 если он другой
open 192.168.1.1
pause 8
;
;В следующей строчке пишите ваш логин вместо "admin"
transmit "admin^M"
pause 4
;
;В следующей строчке пишите ваш пароль вместо "admin" (если вы его поменяли)
transmit "admin^M"
;
;В следующей строчке указываете знак готовности shell установленного на роутере (Обычно нет необходимости изменять)
pause 3
;
;В следующей строчке указываете команду завершения сессии ppp для вашего роутера
transmit "echo 3 > /proc/var/fyi/wan/ppp_0_1_32_1/wanup^M"
;Дальше задана пауза 4 секунды необходимая для того чтобы произошла смена IP-адреса
pause 10
;В следующей строчке указываете команду старта сессии ppp для вашего роутера
transmit "echo 1 > /proc/var/fyi/wan/ppp_0_1_32_1/wanup^M"
pause 1
exit
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
Klassenas (12.04.2012)
  #8  
Старый 11.04.2012, 21:02
Аватар для Klassenas
Klassenas Klassenas вне форума
Новичок
 
Регистрация: 25.05.2009
Адрес: Казахстан, Павлодар
Сообщения: 87
Версия Delphi: Rad Studio 2010
Репутация: 1570
По умолчанию

Вроде в моей голове начинает что-то проясняться.
Использую IdTelnet с вкладки Indy Clients.
Делаю Connect.
Роутер отвечает:
Password: ******
Я ему в ответ:
Код:
  
  IdTelnet1.SendCh('a');
  IdTelnet1.SendCh('d');
  IdTelnet1.SendCh('m');
  IdTelnet1.SendCh('i');
  IdTelnet1.SendCh('n');
  IdTelnet1.SendCh(#13);
  IdTelnet1.SendCh('a');
  IdTelnet1.SendCh('d');
  IdTelnet1.SendCh('m');
  IdTelnet1.SendCh('i');
  IdTelnet1.SendCh('n');
  IdTelnet1.SendCh(#13);
Он мне отвечает:
Password: *****
Copyright (c) 2001 - 2011 TP-LINK TECHNOLOGIES CO., LTD.
TP-LINK>
Значит, он принял и логин, и пароль.
Авторизация удалась.

Только вот пока не догоняю, как ему команду 'reboot' послать?
__________________
Если ты чего-то не знаешь, значит есть шанс научиться чему-то новому
Ответить с цитированием
  #9  
Старый 12.04.2012, 01:41
ApxaHGe1 ApxaHGe1 вне форума
Активный
 
Регистрация: 08.04.2008
Адрес: Нижний новгород
Сообщения: 311
Репутация: 38
По умолчанию

Мануал почитай по роутеру )
Ответить с цитированием
  #10  
Старый 12.04.2012, 12:51
Аватар для Klassenas
Klassenas Klassenas вне форума
Новичок
 
Регистрация: 25.05.2009
Адрес: Казахстан, Павлодар
Сообщения: 87
Версия Delphi: Rad Studio 2010
Репутация: 1570
По умолчанию

Как и ожидал, от мануала оказалось мало толку.
Немного подумав, решил обратиться в службу технической поддержки.
Уж они-то знают, как перезагружаются их роутеры!
Всё верно: команду reboot роутер не понимает.
Зато он прекрасно понимает команду sys reboot.
Теперь всё работает!
__________________
Если ты чего-то не знаешь, значит есть шанс научиться чему-то новому
Ответить с цитированием
  #11  
Старый 12.04.2012, 13:02
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

кста, д-линкам можно команду help послать и ответят
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #12  
Старый 12.04.2012, 13:39
Аватар для Klassenas
Klassenas Klassenas вне форума
Новичок
 
Регистрация: 25.05.2009
Адрес: Казахстан, Павлодар
Сообщения: 87
Версия Delphi: Rad Studio 2010
Репутация: 1570
По умолчанию

Как допишу прогу, выложу исходники. Авось кому-нибудь пригодится.
__________________
Если ты чего-то не знаешь, значит есть шанс научиться чему-то новому
Ответить с цитированием
  #13  
Старый 12.04.2012, 16:11
Аватар для Klassenas
Klassenas Klassenas вне форума
Новичок
 
Регистрация: 25.05.2009
Адрес: Казахстан, Павлодар
Сообщения: 87
Версия Delphi: Rad Studio 2010
Репутация: 1570
По умолчанию

В принципе, прога готова.
Сразу хочу предупредить, что использовал компоненты, не входящие в стандартную комплектацию Delphi: компонент TPing из библиотеки компонентов Internet Component Suite v7, а также TCoolTrayIcon.
__________________
Если ты чего-то не знаешь, значит есть шанс научиться чему-то новому

Последний раз редактировалось Klassenas, 14.04.2012 в 15:42.
Ответить с цитированием
  #14  
Старый 13.04.2012, 17:44
Аватар для Klassenas
Klassenas Klassenas вне форума
Новичок
 
Регистрация: 25.05.2009
Адрес: Казахстан, Павлодар
Сообщения: 87
Версия Delphi: Rad Studio 2010
Репутация: 1570
По умолчанию

Окончательная версия программы.
Больше переделывать уже не буду.
Усовершенствовал. Функционально, красиво. Предположительно можно настроить под любой роутер.
Редкий случай, когда сам доволен тем, что сделал.
Но: из стандартных компонентов только форма. Очень уж я люблю поддержку красивых стильных скинов. Прошу простить мне эту слабость.
Использованы компоненты из библиотек Internet Component Suite v7, Alpha Controls v 7.5, Indy.
__________________
Если ты чего-то не знаешь, значит есть шанс научиться чему-то новому

Последний раз редактировалось Klassenas, 14.04.2012 в 15:42.
Ответить с цитированием
  #15  
Старый 13.04.2012, 18:59
ildvild ildvild вне форума
Прохожий
 
Регистрация: 12.10.2010
Адрес: Уфа
Сообщения: 31
Версия Delphi: 7, 2007, 2010
Репутация: 10
По умолчанию

Выложите пожалуйста саму прогу
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:23.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter