PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Script zur DSL Überwachung



gasgas_peter
09.08.02, 19:44
Hallo!
Wer von Euch Spezialisten kann mir einen Tipp geben wie ich folgendes am geschicktesten realisiere.

Ich hab in einer größeren Firma einen DLS Router auf Basis Debian Linux installiert. Von Zeit zu Zeit passiert es das die T-DSL Verbindung nicht mehr funktioniert. Ein Restart der entsprechenden Dienste führt dann zum Erfolg.

Da ich mich nicht permanent im Hause befinde, hätte ich gerne einen Script, welcher von Zeit zu Zeit zum Beispiel ein Ping ins Internet schickt, oder noch besser eine HTML Seite aufruft und somit überprüft ob die Internetverbindung und der Squid funktionieren.
Bei keiner Antwort würde der Script selbstständig die entsprechenden Dienst restarten.

Wer hat einen Vorschlag, bzw. hat so was schon gemacht.

Vielen Dank für Eure (hoffentlich kommenden) Antworten

Peter

dipesh
09.08.02, 20:04
Geh doch folgenden Weg (on-the-scratch geschrieben, also nicht meckern :-) :



#!/usr/bin/perl

(my $ip = `/sbin/ifconfig ppp0 | grep "inet addr" | cut -f2 -d":"`) =~ s{[^0-9.]}{}g;
unless($ip) {
# not connected, so try to (re-)connect
`/etc/rc.d/pppoed start`;
}


Das Perlscript prüft ganz einfach ob ppp0 existent ist. Ist dies nicht der Fall, so wird versucht eine Verbindung aufzubauen. Das ganze dann noch mittels eines Cronjobs regelmässig starten und das Problem sollte gelöst sein.

MfG

dipesh
09.08.02, 20:09
und noch ein alternatives Script:



#!/usr/bin/perl

use Socket;

my $url = "http://www.blabla.de";
my $port = "80";

(my $ip = `/sbin/ifconfig ppp0 | grep "inet addr" | cut -f2 -d":"`) =~ s{[^0-9.]}{}g;
unless($ip) {
`/etc/rc.d/pppoed start`;
exit;
}

my ($host,$uri)=($url =~ m!http://(.*?)(/.*)!);
die "ERROR: invalid url" unless($host and $uri);

my $post = "bla bla";

socket(SOCK,PF_INET,SOCK_STREAM,getprotobyname('tc p')) or die "ERROR: open socket failed";
connect(SOCK,sockaddr_in($port,inet_aton($host))) or die "ERROR: connect socket failed";
send(SOCK, "POST $uri HTTP/1.0\r\n".
"Host: $host:$port\r\n".
"ACCEPT: text/html\r\n".
"Content-Length: ".length($post)."\r\n\r\n".
"$post",0) or die "ERROR: send socket failed";
while (<SOCK>) {
#s{[\r\n\t\0]}{}g;
print $_;
}
close SOCK or die "ERROR: close socket failed";


und statt des die bei dem Versuch den socket zu öffnen bzw. zu verbinden dann die gewünschte Aktion durchführen...

MfG

explosiver
10.08.02, 01:56
hallo

vielleicht hilft dir diese info auch ein wenig weiter


http://sdb.suse.de/de/sdb/html/cg_pmtu2.html

sorry wenns ganz falsch ist.

Danny

gasgas_peter
10.08.02, 16:11
Vielen Dank erst mal!

Was den ersten Script betrifft, so wird dieser mir nicht viel weiterhelfen, da PPP0 in beschriebenem Fall existent ist.

Den zweiten Scipt werde ich mal testen.

Was die Suse Seite betrifft, ist zwar ein guter Tip, löst aber mein Problem nicht.