Hallo,
ich benötige hilfe zu einem Script und zwar möchte ich ein automatisches umschalten zwischen 2Mbit Standleitung und
2Mbit DSL-Leitung realisieren. Das umschalten klappt auch soweit, allerdings möchte ich noch einige Prüffunktionen
einbauen.
Dazu würde ich gerne Wissen, wie ich eine Netzwerkroute setzen kann bzw. herausbekomme ob diese schon gesetzt ist.
Ausserdem möchte ich verhindern, das mehr als ein pppd läuft. Wenn doch sollen alle pppd's beendet und die PPP Verbindung
neu aufgebaut werden.
Hatte erst versucht über system("route -n") zu gehen, aber dort bekomme ich die Ausgabe nicht zurück. Gibts da ne Möglichkeit?
Ich hoffe Ihre könnt mir ein paar Tipps/ Hinweis geben.
Mfg
Stefan D.
User since
2005-01-17
14787
Artikel
Admin1
Ausgabe von
route -n einlesen:
open(PIPE, "route -n |") || die "cannot open route: $!";
while (my $line = <PIPE>) {
print $line;
# Ausgabe von route
}
close(PIPE) || die "can't close route: $!";
Prüfen ob mehrere pppd laufen:
open(PIPE, "ps ax |") || die "cannot open route: $!";
my @lines = grep( /pppd/, <PIPE>); # Zeile, die pppd enthalten
close(PIPE) || die "can't close pipe: $!";
if (@lines > 1) { # mehr als ein PID gefunden
for my $line (@lines) {
my ($pid) = $line =~ /(d+)/; # erste numerische Zahlen enthalten PID
system( "kill -s KILL $pid"); # besser wäre TERM zu verwenden
}
system( "/etc/init.d/pppd start"); # ppd starten
}
\n\n
<!--EDIT|GwenDragon|1150211822-->
User since
2006-06-13
1
Artikel
BenutzerIn
Danke, werde ich ausprobieren.
Sehe ich das richtig, das bei z.B. open(PIPE, "ps ax |") das filehandle auf die
Ausgabe von ps ax zeigt (durch die Pipe)?
Danke, nochmals. :D
User since
2005-01-17
14787
Artikel
Admin1
Ich habe oben nochwas geändert ;)
Ich hoffe, dass es richtig ist. Mein Unix ist etwas eingerostet.\n\n
<!--EDIT|GwenDragon|1150211921-->
User since
2003-08-04
14371
Artikel
ModeratorIn
es gibt auch den Perl-Befehl
kill!
User since
2005-01-17
14787
Artikel
Admin1
[quote=renee,13.06.2006, 17:19]es gibt auch den Perl-Befehl
kill![/quote]
Ähhm, ja!?! Sehe ich auch gerade. :blush:
Na ja, solange es doch übetr die System-Shell geht. Ich weiß, ist nicht elegant.