Bon soyons sérieux, je déteste la LiveBox, seulement c’est le seul moyen d’avoir TV et Telephone chez Orange…
Il ne s’agit pas d’un appareil professionnel et pour lui faire cracher ne serait-ce que quelques valeurs comme la marge de bruit il faut se lancer dans tout un mic mac telnet machin truc chouette … (et j’en passe…).
Bref comme j’ai passé mon dimanche à triturer ce bout de ferraille, voici quelques brides de mes recherches.
L’interface Web de la live box permet d’obtenir ces valeurs, seulement pour automatiser sa récupération …prout…
Comme la livebox dispose AUSSI du service telnet j’ai commencé par chercher les valeurs nécessaires : user:root / pass:1234
Ensuite on se retrouve dans le système suivant :
[ root @ home ] $ adsl
[ root @ adsl ] $ mon
ADSL Monitoring is Successful. The values are:
adslLineStatus : Opérationnel
adslMode : G992_5_A
Upstream = 944 Kb ( Intlv[LP0] )
Downstream = 8524 Kb ( Intlv[LP0] )
=================================================
DIAG Info :
=================================================
Attenuation ( dB ) : 29.2 12.3 (FE)
SNR margin ( dB ) : 10 13 (FE)
HEC counter : 956
CRC counter : 131
RTFirmwareVer : 0x0c16010c
Superbe j’ai tous ce que je voulais et même plus. Il ne reste plus qu’à me faire un petit script pour automatiser tout cela :
#!/usr/bin/perl
# A Script to get LiveBox ADSL status by Bodman@wanadoo.fr
# standard output :
# Up:944 Down:8524 LocalAtt:29.2 TermAtt:12.3 LocalSNR:10 TermSNR:13 HEC:960 CRC:135
# Reason to get no output :
# no host param
# bad user/password ( <> root/1234 )
# bad adsl monitoring output ( <> 18 lines )
# livebox stress
# Get host,user,pass ( root / 1234 default )
if ($ARGV[0] ne "") { $host = $ARGV[0]; } else { exit(); }
if ($ARGV[1] ne "") { $user = $ARGV[1]; } else { $user = 'root' }
if ($ARGV[2] ne "") { $pass = $ARGV[2]; } else { $pass = '1234' }
# Get Telnet env
use Net::Telnet;
$telnet = new Net::Telnet ( Timeout=>20 );
$telnet->errmode(sub {die @_ unless $_[0] =~ /eof/});
# Telnet Login
$telnet->open($host);
$telnet->login($user,$pass);
#Go to adsl env and get monitoring
$telnet->cmd("adsl");
@tableau = $telnet->cmd("mon");
#End Telnet session in good condition
$telnet->cmd("exit");
$telnet->cmd("exit");
$telnet->close;
if (@tableau == 18) #good data
{
# FORME DU TABLEAU
#=====================================================
#...
#5 Upstream = 944 Kb ( Intlv[LP0] )
#6 Downstream = 8524 Kb ( Intlv[LP0] )
#...
#10 Attenuation ( dB ) : 29.2 12.3 (FE)
#11 SNR margin ( dB ) : 12 13 (FE)
#12 HEC counter : 956
#13 CRC counter : 131
#...
#=====================================================
#Prepare data
@tableau[5] =~ s/^.* = ([0-9]*) Kb.*$/Up:\1 /;
@tableau[6] =~ s/^.* = ([0-9]*) Kb.*$/Down:\1 /;
@tableau[10] =~ s/^.*:[^0-9]*([0-9.]*)[^0-9]*([0-9.]*).*$/LocalAtt:\1 TermAtt:\2 /;
@tableau[11] =~ s/^.*:[^0-9]*([0-9.]*)[^0-9]*([0-9.]*).*$/LocalSNR:\1 TermSNR:\2 /;
@tableau[12] =~ s/^.*:[^0-9]*([0-9.]*).*$/HEC:\1 /;
@tableau[13] =~ s/^.*:[^0-9]*([0-9.]*).*$/CRC:\1 /;
# cut \n
chop(@tableau);
#print data
print @tableau[5];
print @tableau[6];
print @tableau[10];
print @tableau[11];
print @tableau[12];
print @tableau[13];
}
exit();
Avec ça on trouve une sortie compatible avec cacti :
./adsl_livebox.pl 192.168.1.1
Up:944 Down:8524 LocalAtt:29.2 TermAtt:12.3 LocalSNR:10 TermSNR:13 HEC:960 CRC:135
Chouette je n’ai plus qu’à faire de beaux graphiques 🙂