W zwiazku z wpisem http://www.blog.dudzik.org.pl/asmax-1004g-resetowanie-polaczenia.html pojawiło się parę próśb o napisanie analogicznego skryptu dla systemu Windows. Najprościej (tj. bez użycia osobnych aplikacji) można to zrealizować skryptem .vbs o poniższej treści:
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "cmd"
WScript.Sleep 100
WshShell.AppActivate "C:\Windows\system32\cmd.exe"
WScript.Sleep 100
WshShell.SendKeys "telnet 192.168.1.254{ENTER}"
WScript.Sleep 100
WshShell.SendKeys "admin{ENTER}" 'login
WScript.Sleep 100
WshShell.SendKeys "xxx{ENTER}" 'haslo
WScript.Sleep 100
WshShell.SendKeys "adsl connection --up{ENTER}" '
WScript.Sleep 200
WshShell.SendKeys "logout{ENTER}" '
WScript.Sleep 200
WshShell.SendKeys "{ENTER}" '
WScript.Sleep 200
WshShell.SendKeys "exit{ENTER}" '
Prosze zmienic ip router (tutaj jest domyślne), login i hasło na właściwe. Skrypt zadziała tylko w przypadku gdy na routerze włączymy dostęp za pomocą usługi telnet.
Poniżej gotowy plik do sciagniecia
Resetuj router
W przypadku mojego poprzedniego routera ADSL (Linksys AG241) konieczne było symulowanie przeglądarki komputerowej i akcji użytkownika - router ten nie posiadał opcji dostępu poprzez telnet lub ssh.
Zrealizowalem to skryptem nastepujacej treści:
#!/usr/bin/perl -w
use strict;
use warnings;
use LWP;
use HTTP::Request::Common;
our $ua = LWP::UserAgent->new;
$ua->request(POST 'http://haslo:login@192.168.2.1/apply.cgi',
[submit_button => 'Status_Router', submit_type => 'disconnect',
change_action => 'gozila_cgi', wan_proto => 'pppoe']);
sleep 5;
$ua->request(POST 'http://haslo:login@192.168.2.1/apply.cgi',
[submit_button => 'Status_Router', submit_type => 'connect',
change_action => 'gozila_cgi', wan_proto => 'pppoe']);
Aktualnie korzystam z routera Asmax 1004g (mówi się że darowanemu koniowi nie zagląda się w zęby ale ten router to całkiem dobry sprzęt - dzięki Netio :)) i na szczęście umożliwia on zarządzanie poprzez telnet lub ssh.
Wykorzystując to pierwsze cały wyżej cytowany skrypt zmiescił się w jednej linijce
#!/bin/bash
(sleep 2; echo login; sleep 2; echo haslo; sleep 2; echo "adsl connection --up"; sleep 50) | telnet 192.168.2.1
W ten sam sposób można resetować wiekszość (wszystkie?) routery oparte o chipsety Broadcom i udostepniające zarządzanie poprzez telnet.