sean12
Posts: 37
Joined: Fri Feb 15, 2013 8:31 am

Riavvio automatico Router Netgear MBRN3000

Sat Feb 23, 2013 12:52 am

ciao a tutti,

ho un Netgear MBRN3000 Firmware v1.0.0.72_2.0.12WW con chiavetta ALCATEL modello X200S e sim WIND, lo uso per un sistema di monitoraggio da remoto grazie ad un raspberry, in un campo a qualche chilometro da casa mia.
il problema è che ogni tanto dopo 1,2 anche 5 giorni il router si blocca, cioè la chiavetta lampeggia invece di essere fissa e il router non è connesso, quindi manualmente devo andare li e riavviare il router.
Quindi mi servirebbe uno script che nel caso non ci sia la connessione mi riavvia il router.
Pensavo di aver risolto con:

Code: Select all

#!/bin/bash
cd /tmp/
rm Modem_status.htm
wget http://192.168.0.1/Modem_status.htm --http-user='tuouser' --http-password='tuapassword'
if ( grep -r "0\.*" /tmp/Modem_status.htm );
then
GET http://tuouser:tuapassword@192.168.0.1/reboot.cgi
fi

ma non so perchè ma non si riavvia correttamente, cioè:
se vado da browser alla pagina del router 192.168.0.1/reboot.cgi mi compare la solita pagina di caricamento con scritto "attendere...." e il router si riavvia, ma una volta finito il caricamento il router non si riesce a ricollegare.
Invece se sempre da browser vado alla pagina del modem 192.168.0.1 e poi in "Diagnostica" clicco su "riavvia"(che mi rimanda alla pagina 192.168.0.1/reboot.cgi), riappare la pagina con il caricamento, il router si riavvia e si ricollega correttamente.

Quindi mi servirebbe uno script che interagisce con una pagina htm e mi fa cliccare su "riavvia".
Ho visto un po di esempi con mechanize e python ma essendo alle prime armi con Linux non sono riuscito a creare lo script.

Qualcuno mi può aiutare?

se faccio "visualizza sorgente frame" in "Diagnostica" mi esce fuori questo:

Code: Select all

<html>
<head>
<META name="description" content="MBRN3000">
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<META http-equiv="Content-Style-Type" content="text/css">
<META http-equiv="Pragma" content="no-cache">
<META HTTP-equiv="Cache-Control" content="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="Mon, 06 Jan 1990 00:00:01 GMT">
 
<title>Diagnostica</title> 
<link rel="stylesheet" href="form.css">
<script language="javascript" type="text/javascript" src="func.js"></script>
<script language="javascript" type="text/javascript" src="msg.js"></script>
<script language="javascript" type="text/javascript" src="utility.js"></script>
<script language="javascript" type="text/javascript" src="browser.js"></script>
<script language="javascript" type="text/javascript" src="md5.js"></script>
 
<script language="javascript" type="text/javascript">
<!-- hide script from old browsers

function ping_ck()
{
    var cf = document.forms['ping'];
    if(checkIP(cf.IPAddr1,cf.IPAddr2,cf.IPAddr3,cf.IPAddr4,254))
    {
        alert("Indirizzo IP non valido. Inserirlo nuovamente.\n!\n");
        return false;
    }
    cf.ping_IPAddr.value = cf.IPAddr1.value+'.'+cf.IPAddr2.value+'.'+cf.IPAddr3.value+'.'+cf.IPAddr4.value;
    return ;
}

function checkIPAddr(dstText)
{
    data = dstText.match(/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/);
    if (!data || !dstText) return false;
    return true;
}

function lookup_ck()
{
    var cf = document.forms['dnslookup'];
    if(isBlank(cf.host_name))
    {
        alert("Nome Internet obbligatorio!\n");
        return false;
    }
    
   if(cf.host_name.value.indexOf(".") == -1)
    {
        alert("Nome Internet non valido. Inserirlo nuovamente.\n");
        return false;
    }
   
   if(checkIPAddr(cf.host_name.value))
   {
        alert("Nome Internet non valido. Inserirlo nuovamente.\n");
        return false;
    }
    return true;
}

function next_fun(value)
{
    if(value == 1)
      document.reboot.button.value = "Reboot";
    else
       document.reboot.button.value = "Scan";  
}

var msg_restart = "Attenzione! Riavviando il computer si interromperanno tutte le connessioni esistenti al router (come quella in corso) o dal router (ad es. le connessioni degli utenti LAN che accedono a Internet)";

//-->
</script>
</head>
<body bgcolor="#ffffff" onload="loadhelp('DIAG_diag');document.forms[0].elements[0].focus();">
<form name="ping" method="POST" action="ping.cgi" onSubmit="return ping_ck();">
<table border="0" cellpadding="0" cellspacing="3" width="100%">
<tr>
   <td colspan="3"><h1>Diagnostica</h1></td>
</tr>
<tr>
     <td colspan="3" background="liteblue.gif" height="12"> &nbsp;</td>
</tr>
<tr>
   <td colspan="3" nowrap><a href="javascript:loadhelp('DIAG_diag','ping')" tabindex="-1"><b>Ping di un indirizzo IP</b></a></td>
</tr>
<tr>
  <td nowrap>Indirizzo IP:</td>
  <td align="right" nowrap class="num">
     <input type="text" name="IPAddr1" class="num" size="4" maxlength="3" value="">.
     <input type="text" name="IPAddr2" class="num" size="4" maxlength="3" value="">.
     <input type="text" name="IPAddr3" class="num" size="4" maxlength="3" value="">.
     <input type="text" name="IPAddr4" class="num" size="4" maxlength="3" value="">
  </td>
  <td nowrap align="right">&nbsp;<input type="submit" name="ping" value="Ping" ></td>
</tr>
</table>
<input type="hidden" name="ping_IPAddr" value="">
</form>

<form name="dnslookup" method="POST" action="dnslookup.cgi" class="compressed" onSubmit="return lookup_ck();">
<table border="0" cellpadding="0" cellspacing="3" width="100%">
<tr>
     <td colspan="3" background="liteblue.gif" height="12"> &nbsp;</td>
</tr>
<tr>
   <td colspan="3" nowrap><a href="javascript:loadhelp('DIAG_diag','dnslookup')" tabindex="-1" ><b>Esegui ricerca DNS</b></a></td>
</tr>
<tr>
   <td nowrap>Nome Internet:</td>
   <td nowrap align="right"><input type="text" name="host_name" value="" size="24" maxlength="128"></td>
   <td nowrap align="right">&nbsp;<input type="submit" name="lookup" value=Ricerca></td>
</tr>
<tr>
    <td nowrap>Indirizzo IP:</td>
    <td nowrap align="right"><b>&nbsp</b></td>
    <td> &nbsp; </td>
</tr> 
<tr>
    <td nowrap>Server DNS:</td>
    <td nowrap align="right"><b>0.0.0.0<br></b></td>
    <td> &nbsp; </td>
</tr>
</table>
</form>

<form name="rtable" method="POST" action="rt.cgi" class="compressed">
<table border="0" cellpadding="0" cellspacing="3" width="100%">
<tr>
  <td background="liteblue.gif" height="12"> &nbsp;</td>
</tr>
<tr>
   <td nowrap><a href="javascript:loadhelp('DIAG_diag','rtable')" tabindex="-1"><b>Mostra tabella di routing</b></a></td>
</tr>
<tr>
   <td colspan="3" align="right"><input type="submit" name="display" value=Mostra></td>
</tr>

<tr>
  <td nowrap height="12"> &nbsp;</td>
</tr>
<tr>
  <td nowrap background="liteblue.gif" height="12"> &nbsp;</td>
</tr>
</table>

</form>


<form name="reboot" method="POST" action="reboot.cgi" class="compressed">
<table border="0" cellpadding="0" cellspacing="3" width="100%">
<tr>
<tr>
   <td nowrap><a href="javascript:loadhelp('DIAG_diag','reboot')" tabindex="-1"><b>Riavvia il router</b></a></td>
</tr>

<tr>
   <td nowrap align="right"><input type="submit" name="button" value="Riavvia" ></td>
</tr>
<tr>
  <td nowrap background="liteblue.gif" height="12"> &nbsp;</td>
</tr>
<tr>
   <td colspan="2"><a href="javascript:loadhelp('DIAG_diag','save')" tabindex="-1"><b>Save diagnostics information</b></a></td>
</tr>
<tr>
   <td nowrap align="right">
   <input type="BUTTON" name="save" value="   Backup   " onclick="window.location.href = 'MBRN3000_usb_device_info';"> 
   </td>
</tr>
<!--
<tr>
  <td nowrap background="liteblue.gif" height="12"> &nbsp;</td>
</tr>
<tr>
   <td colspan="2"><a href="javascript:loadhelp('DIAG_diag','scan')" tabindex="-1"><b>Scan available command port</b></a></td>
</tr>
<tr>
   <td nowrap align="right">
   <input type="submit" name="button" value="Scan"> 
   </td>
</tr>
-->
<!--
<tr>
   <td nowrap align="right"><input type="BUTTON" name="dump" value="Dump AT Command" onclick="openDataSubWin('WWAN_Log.htm','width=560,height=400,scrollbars,status=yes,resizable=yes');">
</tr>
-->
</table>

</form>
<p>
</p>
</body>
</html>
l'immagine che ho è
Attachments
Diagnostica.png
Diagnostica.png (62.39 KiB) Viewed 5449 times

naftaism
Posts: 84
Joined: Fri Feb 22, 2013 8:53 pm

Re: Riavvio automatico Router Netgear MBRN3000

Sat Feb 23, 2013 1:58 pm

Ciao, cosi su due piedi, mi viene in mente che potresti utilizzare qualcosa tipo expect ed effettuare se supportato un accesso telnet, oppure un "autoclicker", o meglio un autoclicker che può essere scriptato, io ad esempio mi trovo benissimo con xdotool, l'idea è questa:

#supponiamo di usare chrome, giusto per fare un esempio...

#apro la pagina del router all'indirizzo corrispettivo
#uso & per poter eseguire altri comandi in contemporanea
#do sleep 10 per aspettare che la pagina sia caricata
#do le coordinate del primo tasto da cliccare, e faccio cliccare quel tasto
#(1 sta per tasto 1 del mouse, il sinistro) ed aspetto (sleep)

/opt/google/chrome/google-chrome <indirizzo pagina router> & sleep 10 && xdotool mousemove 120 250 && xdotool click 1

se per esempio devi effettuare il login, puoi usare: xdotool key, dopo averlo fatto puntare nella barra di inserimento username e/o password, lo fai cliccare, per far iniziare l'inserimento del testo (proprio come quando ci stai personalmente davanti), più o meno in questo modo:

supponiamo di dover inserire password: rpi

xdotool mousemove 130 145 && xdotool click 1 && xdotool key r && xdotool key p && xdotool key p

come avrai già capito gli inconvenienti sono: dover scrivere la password dentro lo script, e dover scrivere lettera per lettera i comandi: possibili soluzioni: dare al file i permessi con chmod 600 (o 655 non ricordo esattamente) nome_file, affinchè solo il proprietario possa leggerne il conenuto,
e creare un semplice ciclo for che ti inserisca la password simile a questo:

pass_router=("r" "p" "i")
for i in ${pass_router[@]}; do
xdotool key $i
done

dopodicchè dovrai far andare il mouse tramite mousemove sopra il tasto che generalmente premi per dare l'ok, e creare il resto dello script necessario a posizionarsi nella pagina "manutenzione" (per fare un esempio) e poi fargli gliccare il tasto "reboot" e via dicendo...

P.S.
Se opti per usare expect, posso darti qualche dritta, ma i problemi che possono sorgere sono: il router supporta telnet? (la connessione non sarebbe remota, ma locale quindi non hai il problema eventuale di ip fisso e di eventuali necessità di utilizzare servizi dns dinamici).

P.S. 2
Non so se tali software sono disponibili per rpi! Io stesso non ho ancora un rpi (è in viaggio dentro il suo pacco)!

User avatar
oozic
Posts: 249
Joined: Sun Nov 25, 2012 10:58 pm

Re: Riavvio automatico Router Netgear MBRN3000

Sat Feb 23, 2013 4:30 pm

la soluzione di usare qualcosa che ti simula un click è a dir poco macchinosa, è al pari di usare un fucile per uccidere una zanzara :D

non ti funziona usando solo il link "/reboot.cgi" perchè non gli stai passando i parametri che vuole probabilmente, infatti cliccando sul bottone fai una submit con un POST e gli passa dei parametri (quelli del form in genere).
il form relativo è:
<form name="reboot" method="POST" action="reboot.cgi" class="compressed">

quindi devi fare una post con i parametri che vuole per riavviare il router
wget --post-data "button=reboot" http://192.168.0.1/reboot.cgi

non sono sicurissimo del button=reboot ma dal codice che mi hai postato sembra l'unica variabile passata.
bisognerebbe però vedere gli altri javascript inclusi perchè potenzialmente potrebbero fare qualche azione.
RPi #1: xbmc - transmission daemon
RPi #2: nginx - nodejs - samba
http://mattia-asti.it

sean12
Posts: 37
Joined: Fri Feb 15, 2013 8:31 am

Re: Riavvio automatico Router Netgear MBRN3000

Sat Feb 23, 2013 5:06 pm

Grazieeeeee funziona :D

ho sostituito come hai detto tu con questo:

Code: Select all

wget -q --post-data "button=reboot" http://tuouser:tuapassword@192.168.0.1/reboot.cgi
è il router si è riconnesso correttamente :D

Grazie mille

sean12
Posts: 37
Joined: Fri Feb 15, 2013 8:31 am

Re: Riavvio automatico Router Netgear MBRN3000

Sat Feb 23, 2013 6:54 pm

quindi lo script corretto per il riavvio, che ho chiamato reboot e messo in /home/TuoUser, è:

Code: Select all

#!/bin/bash
cd /tmp/
rm Modem_status.htm
wget http://192.168.0.1/Modem_status.htm --http-user='tuouser' --http-password='tuapassword'
if ( grep -r "0\.*" /tmp/Modem_status.htm );
then
wget -q --post-data "button=reboot" http://tuouser:tuapassword@192.168.0.1/reboot.cgi
fi

poi per lanciarlo ogni 10 minuti ho inserito in:

Code: Select all

sudo crontab -e
questa riga:

Code: Select all

*/10 * * * * home/TuoUser/reboot

in questo modo ogni 10 minuti se non c'è connessione il modem si riavvia :D

User avatar
oozic
Posts: 249
Joined: Sun Nov 25, 2012 10:58 pm

Re: Riavvio automatico Router Netgear MBRN3000

Sat Feb 23, 2013 7:10 pm

:) mi fa piacere

ciao!
RPi #1: xbmc - transmission daemon
RPi #2: nginx - nodejs - samba
http://mattia-asti.it

sean12
Posts: 37
Joined: Fri Feb 15, 2013 8:31 am

Re: Riavvio automatico Router Netgear MBRN3000

Wed Feb 27, 2013 11:17 pm

se avete degli errori provate con questa procedura:

Code: Select all

#!/bin/bash
cd /tmp/
rm Modem_status.htm
wget http://192.168.0.1/Modem_status.htm --http-user='tuouser' --http-password='tuapassword'
if ( grep -r "0\.*" /tmp/Modem_status.htm );
then
wget -q --post-data "button=reboot"  http://192.168.0.1/reboot.cgi --http-user='tuouser' --http-password='tuapassword' 
fi
copiato in una cartella di sistema per lanciarlo da ovunque:

Code: Select all

sudo mv reboot /usr/bin/
poi per lanciarlo ogni 10 minuti ho inserito in:

Code: Select all

sudo crontab -e
questa riga:

Code: Select all

*/10 * * * * reboot

stelvietto
Posts: 1
Joined: Wed Oct 30, 2013 8:49 am

Re: Riavvio automatico Router Netgear MBRN3000

Wed Oct 30, 2013 10:16 am

Ciao, un paio di info se è possibile:
ti serve per il controllo remoto di un impianto FV?
che chiavetta usb hai? e che operatore?
ho il tuo stesso problema, ho il modem collegato direttamente al sistema di monitoraggio power one, funziona per qualche giorno e poi....niente :(....il gestore che ho è wind, ho provato diverse chiavette, sia una E160G un E156G e tra un po' un'altra chiavetta. Il problema è sempre lo stesso...naviga per un po' poi cade e non si riconnette più.
Come soluzione provvisoria avevo pensato ad un timer sulla presa elettrica del router che ogni tanto, una volta al giorno mi stacca e riattacca il router. Altrimenti avete qualche altra idea?
grazie mille

andrea.dalessandro
Posts: 2
Joined: Fri Jan 31, 2014 4:10 pm

Re: Riavvio automatico Router Netgear MBRN3000

Fri Jan 31, 2014 4:19 pm

ciao ,
stavo pensando di collegare il router ad un rele del raspberry e far girare uno script sul raspi che fa il ping ad un server sempre on line tipo google e se manca la connessione click il router viene riavviato....
qualcuno mi puo' aiutare??????

Angelus88
Posts: 442
Joined: Mon May 13, 2013 9:25 am
Location: Ivrea, TO (Italy)

Re: Riavvio automatico Router Netgear MBRN3000

Fri Feb 07, 2014 10:35 am

andrea.dalessandro wrote:ciao ,
stavo pensando di collegare il router ad un rele del raspberry e far girare uno script sul raspi che fa il ping ad un server sempre on line tipo google e se manca la connessione click il router viene riavviato....
qualcuno mi puo' aiutare??????
Sulla configurazione del relè posso consigliarti la guida che ho scritto qualche tempo fa.

Li ho spiegato come collegare il raspberry al relè e quali comandi da shell utilizzare ad esempio:

Code: Select all

echo "4" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio4/direction
echo "1" > /sys/class/gpio/gpio4/value
echo "0" > /sys/class/gpio/gpio4/value
echo "4" > /sys/class/gpio/unexport

Angelus88
Posts: 442
Joined: Mon May 13, 2013 9:25 am
Location: Ivrea, TO (Italy)

Re: Riavvio automatico Router Netgear MBRN3000

Fri Feb 07, 2014 10:51 am

Ok per il ping puoi usare questo script:

Code: Select all

#!/bin/bash
# ping checker tool

FAILS=0
EMAIL_ADDRESS="example@example.com"
SERVER="192.168.1.1"
SLEEP=60

while true; do
    ping -c 1 $SERVER >/dev/null 2>&1
    if [ $? -ne 0 ] ; then #if ping exits nonzero...
        FAILS=$[FAILS + 1]
    else
        FAILS=0
    fi
    if [ $FAILS -gt 4 ]; then
        FAILS=0
        echo "Server $SERVER is offline!" \
            | mail -s "Server offline" "$EMAIL_ADDRESS"
    fi
    sleep $SLEEP #check again in SLEEP seconds
done
ovviamente lo adatti alle tue necessità togliendo la parte relativa all'email e al posto di quella avvii i comandi da shell del relè.

andrea.dalessandro
Posts: 2
Joined: Fri Jan 31, 2014 4:10 pm

Re: Riavvio automatico Router Netgear MBRN3000

Fri Feb 07, 2014 12:40 pm

grazie per gli input mi metto subito a lavoro e ti faccio sapere.
speriamo di combinare qualcosa di buono

Return to “Italiano”