OVH Community, votre nouvel espace communautaire.

Supervision modem Technicolor


vvanholl
17/06/2012, 13h35
Citation Envoyé par laurentm
je fais bien plus simple ! avec ZenOSS qui peut envoyer un ping toutes les minutes vers une adresse ip donnée, ainsi je surveille les VPN de mes clients. Si cela tombe, je reçois immédiatement un mail sur mon téléphone portable, si la connexion se rétablit, je reçois un nouveau mail pour clôturer l'incident.
Je suppose que Nagios le fait aussi, mais avec bien plus de complexité de paramétrage.
J'utilise bien sûr aussi le snmp pour voir la bande passante utilisée par les routeurs.
Oui on peut faire la même chose en pingant une adresse IP, mais ce que je souhaitait c'était récupérer plus d'informations sur ma connexion ADSL, comme le débit maxi en download/upload.

J'aurais bien aimé faire le tout en SNMP mais le modem ne semble pas le gérer

laurentm
17/06/2012, 12h43
je fais bien plus simple ! avec ZenOSS qui peut envoyer un ping toutes les minutes vers une adresse ip donnée, ainsi je surveille les VPN de mes clients. Si cela tombe, je reçois immédiatement un mail sur mon téléphone portable, si la connexion se rétablit, je reçois un nouveau mail pour clôturer l'incident.
Je suppose que Nagios le fait aussi, mais avec bien plus de complexité de paramétrage.
J'utilise bien sûr aussi le snmp pour voir la bande passante utilisée par les routeurs.

vvanholl
17/06/2012, 10h30
Bonjour,

Si comme moi vous utilisez un outil de supervision de type Nagios, voici un petit script utile qui vous donnera l'état de votre connexion ADSL :

Il vous faudra certainement installer les packages telnet et expect avant.
Par exemple sur Debian :
Code:
apt-get install telnet expect


Code:
#!/usr/bin/perl

use Getopt::Long;
use File::Temp qw(tempfile);

sub usage {
	print STDERR "Usage :\n";
	print STDERR "\t-H or --hostname : hostname\n";
	print STDERR "\t-u or --username : username\n";
	print STDERR "\t-p or --password : password\n\n";
	print STDERR "\tExemple : $0 -H 192.168.1.1 -u Administrator -p password\n";
}

my ($hostname,$username,$password);
GetOptions(	'H:s'=>\$hostname,'hostname:s'=>\$hostname,
			'u:s'=>\$username,'username:s'=>\$username,
			'p:s'=>\$password,'password:s'=>\$password);

if (($hostname eq "")||($username eq "")||($password eq "")){
	usage;
	exit 3;
}

my ($fh,$scriptfile)=tempfile();
print $fh "spawn telnet $hostname\n";
print $fh "expect \"Username : \"\n";
print $fh "send \"$username\\r\"\n";
print $fh "expect \"Password : \"\n";
print $fh "send \"$password\\r\"\n";
print $fh "expect \"{$username}=>\"\n";
print $fh "send \":xdsl info\\r\"\n";
print $fh "expect \"{$username}=>\"\n";
print $fh "send \":exit\\r\"\n";
close(fh);

my $state="unknown";
my $download=0;
my $upload=0;

open PIPE,"expect $scriptfile 2>/dev/null|" or die "Could not execute command";
while(){
	if(/^Modem state:/){
		$state=($_=~m/(:[\ \t]*)([a-z]+)/)[1];
	}
	if(/^Bandwidth \(Down\/Up - kbit\/s\):/){
		($download,$upload)=($_=~m/(:[\ \t]*)([0-9]+)\/([0-9]+)/)[1..2];
	}
}
close PIPE;

unlink($scriptfile);

if ($state eq "up"){
	print "OK : state=$state, download=${download}kbps, upload=${upload}kbps\n";
	exit 0;
}
elsif ($state eq "unknown"){
	print "Could not get modem state\n";
	exit 3;
}
else{
	print "ERROR : state=$state, download=${download}kbps, upload=${upload}kbps\n";
	exit 2;
}