Reader valori adsl

ciao
dunque io vorrei fare un programmino che legga il margine di rumore
(SNR) ogni tot secondi dal router adsl e mi crei un log
ho un netgear DG834GT e sono disponibili i sorgenti

una roba del genere ma non pretendo l’interfaccia
basta che mi crei il log in un file.txt
http://img159.imageshack.us/my.php?image=yoda6.png
ecco un esempio
dove si legge il margine del download poi quello dell’upload e l’orario

mi hanno detto di fare uno script dalla shell di linux
o usare ruby se sono con windows

mi potete aiutare?
non so da dove partire

2006/7/23, Enzo [email protected]:

mi hanno detto di fare uno script dalla shell di linux
o usare ruby se sono con windows

mi potete aiutare?
non so da dove partire

anni fa lo avevo fatto con uno script bash (linux)… non conoscevo
ancora ruby :slight_smile: ma più o meno funzionava
così:* scaricavo la pagina di stato(wget)

  • eliminato tutti i tag html mantenendo gl iacapo (sed)
  • trovavo la descrizione del campo che mi interessava e prendevo il
    testo successivo, nel mio caso era l’IP del modem (awk+grep)
  • lo assegnavo ad una variabile e lo validavo (regex)

con ruby dovresti riuscire a fare tutto in non più di una dozzina di righe
:stuck_out_tongue_winking_eye:


Michele F.
SeeSaw | Another point of view


[email protected]

2006/7/24, Enzo [email protected]:

sono a livello zero con ruby ma potrei provarci

grazie della risp

allora potrebbe essere uno stimolante modo di
cominciare :wink:

Michele

sono a livello zero con ruby ma potrei provarci

grazie della risp

Michele F. wrote:

2006/7/23, Enzo [email protected]:

mi hanno detto di fare uno script dalla shell di linux
o usare ruby se sono con windows

mi potete aiutare?
non so da dove partire

anni fa lo avevo fatto con uno script bash (linux)… non conoscevo
ancora ruby :slight_smile: ma pi� o meno funzionava
cos�:* scaricavo la pagina di stato(wget)

  • eliminato tutti i tag html mantenendo gl iacapo (sed)
  • trovavo la descrizione del campo che mi interessava e prendevo il
    testo successivo, nel mio caso era l’IP del modem (awk+grep)
  • lo assegnavo ad una variabile e lo validavo (regex)

con ruby dovresti riuscire a fare tutto in non pi� di una dozzina di righe
:stuck_out_tongue_winking_eye:


Michele F.
SeeSaw | Another point of view
http://www.seesaw.it
[email protected]

2006/7/24, Enzo [email protected]:

sono a livello zero con ruby ma potrei provarci

grazie della risp

altrimenti posta il codice sorgente della pagina di esempio e in 4/5
righe di codice lo si fa.

:tele

tele wrote:

2006/7/24, Enzo [email protected]:

sono a livello zero con ruby ma potrei provarci

grazie della risp

altrimenti posta il codice sorgente della pagina di esempio e in 4/5
righe di codice lo si fa.

:tele

ciao
dunque
se ti riferisci alla pagina che ho linkato
non ho purtroppo il codice
però un conoscente mi ha fatto(e lo ringrazio anche qui) lo script per
linux e funziona.
tu lo potresti ritoccare con ruby per farlo andare sotto windows?

ecco lo script:
#!/bin/sh
USERNAME=“admin”
PASSWORD=“passwd”
IP=“192.168.0.1”
PAGE=“stattbl.htm”
TMPFILE="/tmp/statistiche-snr.log"
LOGFILE=“statistiche.log”
INTERVALLO=“10”

while true; do
unlink $TMPFILE 2>/dev/null
wget --http-user=$USERNAME --http-passwd=$PASSWORD http://$IP/$PAGE
-O $TMPFILE -o /dev/null
DOWN=cat $TMPFILE | tail -n 10 | head -n 1 | sed -e "s/<td nowrap align=\"center\"><span class=\"ttext\">//;s/<\/span><\/td>//;s/ *//"
UP=cat $TMPFILE | tail -n 9 | head -n 1 | sed -e "s/<td nowrap align=\"center\"><span class=\"ttext\">//;s/<\/span><\/td>//;s/ *//"
unlink $TMPFILE 2>/dev/null

DATA=`date`
echo "SNR: down($DOWN), up($UP) -- $DATA" >> $LOGFILE

sleep $INTERVALLO

done;

tele wrote:

mi riferisco a questa pagina: stattbl.htm
posta questa cosi’ e’ piu’ chiaro.

ciao

:tele

questo è il source che si vede con opera

Statistiche del router di NETGEAR

se non è quello che mi chiedevi
dimmi per piacere come devo fare per scaricarla

grazie del supporto

mi riferisco a questa pagina: stattbl.htm
posta questa cosi’ e’ piu’ chiaro.

ciao

:tele

lynx -dump ‘http://IP/setup.cgi?next_file=stattbl.htm’ > source.html

oppure se non lo fa

lynx -dump http://IP/stattbl.htm > source.html

cioe’ mi serve vedere l’output dell’html di stattbl.

puoi anche darci direttamente via web credo http://IP/stattbl.htm e fare
view page source.

ciao

tele wrote:

lynx -dump ‘http://IP/setup.cgi?next_file=stattbl.htm’ > source.html

oppure se non lo fa

lynx -dump http://IP/stattbl.htm > source.html

cioe’ mi serve vedere l’output dell’html di stattbl.

puoi anche darci direttamente via web credo http://IP/stattbl.htm e fare
view page source.

ciao

risolto con il tuo terzo metodo

ecco

Statistiche del router
<tr>
	<td>
	<BR>
 <table border="1" cellpadding="0" cellspacing="0" width="99%">
  <tr>
     <td nowrap align="center"><span class="thead">Collegamento 

ADSL



















Â
Tempo di attività del sistema 13:57:27
Porta Stato Pacc.trasm. Pacc.ricev. Collisioni B/s trasm. B/s ricev. Tempo di
attivitÃ
WAN PPPoA 447169 342556 0 15147 2805 08:14:28
LAN 100M/interi 857378 1120261 0 4079 20668 13:57:26
WLAN 11M/54M 0 0 0 0 0 00:00:00
Downstream Upstream
Velocità di
connessione
6144
kbps
640
kbps
Attenuazione
linea
30.0
db
17.3
db
Margine
rumore
20
db
17
db


tele wrote:

Molto alla veloce, si puo’ fare decisamente di meglio
se hai bisogno di chiarimenti dimmi

require ‘open-uri’

log = File.new(“stats.log”, “a+”)
data = []

while true do
i = 0
open( “http://127.0.0.1/stats.html” ).each do |page|
page.each do |html|
case html
when /<span.>.kbps</span>/
html.each { |line|
line.sub(/<span.
>(.
)kbps/) { data[i] = $1.strip }
}
i+=1
end
end
end
log.write “SNR: down(#{data[0]}) up(#{data[1]}) – #{Time.now.to_s}\n”
sleep 3
end
log.close

grazie mille!

ora ho scaricato ruby e il manuale
do una letta per vedere se riesco a far partire da solo questo tuo
script
ti faccio sapere al + presto

p.s
il file di log me lo salverebbe su desktop di windows?

On Wed, 2006-07-26 at 17:56 +0200, Enzo wrote:

ora ho scaricato ruby e il manuale
do una letta per vedere se riesco a far partire da solo questo tuo
script
ti faccio sapere al + presto

p.s
il file di log me lo salverebbe su desktop di windows?

none te lo salva dove esegui lo script.
mettici il percorso corretto e dovresti essere ok.

ciao

:tele

Molto alla veloce, si puo’ fare decisamente di meglio
se hai bisogno di chiarimenti dimmi

require ‘open-uri’

log = File.new(“stats.log”, “a+”)
data = []

while true do
i = 0
open( “http://127.0.0.1/stats.html” ).each do |page|
page.each do |html|
case html
when /<span.>.kbps</span>/
html.each { |line|
line.sub(/<span.
>(.
)kbps/) { data[i] = $1.strip }
}
i+=1
end
end
end
log.write “SNR: down(#{data[0]}) up(#{data[1]}) – #{Time.now.to_s}\n”
sleep 3
end
log.close

tele wrote:

On Wed, 2006-07-26 at 17:56 +0200, Enzo wrote:

ora ho scaricato ruby e il manuale
do una letta per vedere se riesco a far partire da solo questo tuo
script
ti faccio sapere al + presto

p.s
il file di log me lo salverebbe su desktop di windows?

none te lo salva dove esegui lo script.
mettici il percorso corretto e dovresti essere ok.

ciao

:tele
ciao
dunque
ho installto ruby 1.8.4-20 stable
ha creato scite eccc…

dopo di ciò ho copiato e incollato in scite il tuo script
e lo ho salvato come telereader.rb in una cartella

poi aperto prompt, digito ruby telereader.rb
e mi rida questo messaggio

c:/ruby/lib/ruby/1.8/net/http.rb:560:in initialize': Bad file descriptor - connect(2) (Errno::EBADF ) from c:/ruby/lib/ruby/1.8/net/http.rb:560:inconnect’
from c:/ruby/lib/ruby/1.8/timeout.rb:48:in timeout' from c:/ruby/lib/ruby/1.8/timeout.rb:76:intimeout’
from c:/ruby/lib/ruby/1.8/net/http.rb:560:in connect' from c:/ruby/lib/ruby/1.8/net/http.rb:553:indo_start’
from c:/ruby/lib/ruby/1.8/net/http.rb:542:in start' from c:/ruby/lib/ruby/1.8/open-uri.rb:245:inopen_http’
from c:/ruby/lib/ruby/1.8/open-uri.rb:629:in buffer_open' from c:/ruby/lib/ruby/1.8/open-uri.rb:167:inopen_loop’
from c:/ruby/lib/ruby/1.8/open-uri.rb:165:in open_loop' from c:/ruby/lib/ruby/1.8/open-uri.rb:135:inopen_uri’
from c:/ruby/lib/ruby/1.8/open-uri.rb:531:in open' from c:/ruby/lib/ruby/1.8/open-uri.rb:86:inopen’
from telereader.rb:8

ora
di sicuro sono io che sbaglio…infatti credo di dover mettere delle
variabili
affichè lo script acceda al router e legga i valori, vero?
come nello script per linux ho dovuto mettere mio user, password e ip
anche qui dovrei metterlo ma leggendo le righe non so proprio dove
aggiungerlo…

ho cambiato 127.0.0.1 con l’ip del mio router
ma da prompt poi esce
c:/ruby/lib/ruby/1.8/open-uri.rb:290:in open_http': 401 Unauthorized (OpenURI::HTTPError from c:/ruby/lib/ruby/1.8/open-uri.rb:629:inbuffer_open’
from c:/ruby/lib/ruby/1.8/open-uri.rb:167:in open_loop' from c:/ruby/lib/ruby/1.8/open-uri.rb:165:inopen_loop’
from c:/ruby/lib/ruby/1.8/open-uri.rb:135:in open_uri' from c:/ruby/lib/ruby/1.8/open-uri.rb:531:inopen’
from c:/ruby/lib/ruby/1.8/open-uri.rb:86:in `open’
from telereader.rb:8

che fo?
grazie

ooopps mi son dimenticato l’http auth

semplicemente diventera’:

open(“http://iprouter/stats.html",:http_basic_authentication=>["tuouser”,
“tuapasswd”]).each do |page|

unknown wrote:

ooopps mi son dimenticato l’http auth

semplicemente diventera’:

open(“http://iprouter/stats.html",:http_basic_authentication=>["tuouser”,
“tuapasswd”]).each do |page|

ok
grazie ancora per l’intervento…

dunque con questa modifica siamo a questa situazione

require ‘open-uri’

log = File.new(“stats.log”, “a+”)
data = []

while true do
i = 0
open(
http://192.168.0.1/stats.html",:http_basic_authentication=>["admin”,
“Enzo”] ).each do |page|
page.each do |html|
case html
when /<span.>.kbps</span>/
html.each { |line|
line.sub(/<span.
>(.
)kbps/) { data[i] = $1.strip }
}
i+=1
end
end
end
log.write “SNR: down(#{data[0]}) up(#{data[1]}) – #{Time.now.to_s}\n”
sleep 3
end
log.close

ma il nano dice no

ecco il responso
c:/ruby/lib/ruby/1.8/open-uri.rb:290:in open_http': 401 Unauthorized (OpenURI::HTTPError) from c:/ruby/lib/ruby/1.8/open-uri.rb:629:inbuffer_open’
from c:/ruby/lib/ruby/1.8/open-uri.rb:167:in open_loop' from c:/ruby/lib/ruby/1.8/open-uri.rb:165:inopen_loop’
from c:/ruby/lib/ruby/1.8/open-uri.rb:135:in open_uri' from c:/ruby/lib/ruby/1.8/open-uri.rb:531:inopen’
from c:/ruby/lib/ruby/1.8/open-uri.rb:86:in `open’
from reader.rb:8

(forse è normale
ma se nel browser digito
http://192.168.0.1/stats.html
mi chiede user e password ma poi rimane una schermata vuota)

ciao

mannaggia xche’ nel tuo caso il file che ti interessa non e’ stats.html

dovrai mettere http://iprouter/stattbl.htm .html non ricordo… la pagina
giusta cmq! sorry

mumble dovrei provarlo mettendoci l’http auth ora non ho tempo
appena riesco faccio na prova intanto cerca su google l’errore:

wrong header line format (Net::HTTP BadResponse)

e vedi cosa dicono in giro :wink:

tele wrote:

mumble dovrei provarlo mettendoci l’http auth ora non ho tempo
appena riesco faccio na prova intanto cerca su google l’errore:

wrong header line format (Net::HTTP BadResponse)

e vedi cosa dicono in giro :wink:

ok
ciao

Enzo wrote:

tele wrote:

mumble dovrei provarlo mettendoci l’http auth ora non ho tempo
appena riesco faccio na prova intanto cerca su google l’errore:

wrong header line format (Net::HTTP BadResponse)

e vedi cosa dicono in giro :wink:

ok
ciao

sob…
trovato nulla di interessante