Linksys WAG120N – zmiana adresu IP z poziomu skryptu
2011-03-18 Dodaj komentarz
Korzystając z Internetu czasem warto zmienić adres IP pod jakim jesteśmy widziani w sieci. Umożliwi to przykładowo pobranie następnego pliku bez oczekiwania. Oczywiście nasz ISP musi udostępniać taką możliwość (tak jest, dla przykładu z Neostradą).
W ruterze Linksys WAG120N można to zrobić za pomocą panelu kontrolnego dostępnego poprzez protokół HTTP. Czyli trzeba:
- wejść w przeglądarce pod właściwy adres
- wpisać nazwę użytkownika i hasło (lub zaakceptować zapamiętane przez przeglądarkę)
- przejść do Status (co)
- kliknąć Disconnect
- poczekać chwilkę
- kliknąć Connect
- poczekać chwilkę
Jak widać jest to sporo pracy. Szczęśliwie można to zautomatyzować za pomocą skryptu. Wystarczy skorzystać z sniffera (ja użyłem Wireshark).
W wyniku tego powstał poniższy skrypt powłoki (testowany w Bashu i Zsh). Mam nadzieję, że się komuś przyda. Wystarczy dokleić poniższy kod do pliku konfiguracyjnego powłoki (odpowiednio .bashrc lub .zshrc). No i należy pamiętać, że działa dużo lepiej jeśli odpowiednio ustawi się zmienne USER i PASS.
my-ip() {
wget 'http://checkip.dyndns.org/' --quiet -O- | sed -e \
's/[^0-9]*\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\).*/\1/g'
}
change-ip() {
router-op() {
USER="user"
PASS="password"
ADDR="http://192.168.1.1/setup.cgi"
wget --http-user=$USER --http-password=$PASS $ADDR \
--post-data $1 --quiet -O/dev/null
}
REST='&this_file=Status.htm&next_file=Status.htm&message='
echo Old IP: `my-ip`
router-op 'ctype=pppoa&ifstatus=Up&todo=disconnect'$REST
sleep 4
router-op 'ctype=pppoa&ifstatus=Up&todo=connect'$REST
sleep 8
echo New IP: `my-ip`
}
