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` }