Restart automat la un Access Point sau Router

Uneori îmi pun probleme şi apoi încerc să le rezolv. Şi asta se întâmplă destul de des.
Astăzi a apărut problema unui access point.
L-am luat de la dc-shop.ro şi, cum mă aşteptam raportat la preţul lui, a început să creeze probleme. Este vorba despre TEW-450APB, la un preţ foarte mic, un pic peste 100 lei.
Am conectaţi pe el vreo 8 clienţi, majoritatea copii fidele facute de chinezi după acelaşi model (adica wl-ap-2454 de la Ral).
La intervale total neregulate, fără absolut nici o logică, mi se deconectau toţi (absolut toţi) clienţii de pe el, fără să apară a fi deconectaţi. Access-pointul era în regulă pe partea de LAN, puteam ajunge să îl comand, dar era aiurea pentru că eu aflam de multe ori la o oră sau mai mult de deconectare. Am monitorizare foarte bine pusă la punct, dar nu am un sistem care sa mă sune pe mobil sau sa îmi dea sms când apar probleme.
Aici mi-am creat singur problema: cum să pot da restart la acel AP automat când toţi clienţii sunt deconectaţi. Aparatul fiind o sculă ieftină, nu are telnet şi interfaţa web este (la prima vedere) html + ceva java script. Adică toate paginile se termină în .html .
Am luat o imagine a flash-ului (pentru update) de la wl-ap-2454, m-am uitat în ea cu viewer-ul de la Volkov Commander (se poate cu orice hex editor) si am văzut că de fapt este o arhivă arj cu extensia .bin. Am deschis fisierul cu winrar si, într-adevăr, era o arhiva cu un singur fisier în ea. L-am extras si am cautat în Volkov Commander ceva cuvinte „restart” , „reboot” , etc. Nu am gasit ceva să mă mulţumească, dar am gasit altceva interesant. Toate fişierele pe care eu le vedeam cu extensia html apăreau în memoria ROM şi cu extensia cgi.
Am căutat ceva pe google şi am aflat (de fapt ştiam dar nu eram sigur) că pot trimite date prin metoda POST la o pagină web cu ajutorul comenyilor linux wget şi curl, cu ultima fiint mult mai uşor.
După multe încercări am ajuns la următoare linie de comandă în linux:

curl -d "host_name=trend&xrMode=1&apply=1" \
http://admin:admin@192.168.102.36/basic_setting.cgi


Pe româneşte, îî schimb numele în „trend”, îi activez Extended Range şi apăs butonul „Apply” (adică îl fac să creadă că am schimbat câte ceva pe acolo şi apoi îl forţez să se restarteze)
Faza funcţionează şi la TEW-450APB şi la WL-AP-2454 şi cred că are şanse foarte mari să meargă şi la WAP-4000 al lui Planet (asta pentru că are relativ acelaşi soft)
Dacă am reuşit asta… deja restul e floricică de bujor la urechea dreaptă. Adica am trântit un script în bash:

#!/bin/bash
cd /aurel/ap/reset
sleep 10
oprite=0
lista="11 12 13 14 15 16 17"
for ap in `echo $lista`
do
    a=`ping -c1 -i1 -w2 192.168.102.$ap | grep rtt | wc -l`
    if [ $a = 0 ]
    then
       oprite=`expr $oprite \+ 1`
    fi
done
echo oprite=$oprite
if [ $oprite = 7 ]
then
   curl -d "host_name=trend&xrMode=1&apply=1" \
http://admin:admin@192.168.102.36/basic_setting.cgi
   echo `date`-reset >> log.txt
fi

şi i-am zis în /etc/crontab să fie rulat o data la 2 minute.
Ce face? Verifică dacă toţi cei 7 clienţi sunt deconectaţi. Dacă raspunsul este TRUE, trimite linia de restart la Access Point şi acesta se va restarta. Deci în maxim 2 minute clienţii vor avea din nou reţea, internet, youtube, hi5, messenger, bla bla bla.

aurel [dot] ro