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

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:in buffer_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:in open_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:in open’
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