Schrift
[thread]139[/thread]

suche perlscript, wenn ping 4x negativ, dann mail



<< |< 1 2 3 >| >> 26 Einträge, 3 Seiten
cc
 2004-01-11 17:49
#816 #816
User since
2004-01-09
55 Artikel
BenutzerIn
[default_avatar]
hallo

suche ein perl script, und zwar,
wenn ping 4 mal keine Antwort gibt,
dann wird es eine mail an administrator ausgelöst.

gruss
cc
[E|B]
 2004-01-11 18:25
#817 #817
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Wieso schreibst du dir das nicht selber? Ist doch nicht sonderlich schwer!
Wüsste nicht, dass es so ein Script gibt...\n\n

<!--EDIT|[E|B]|1073838397-->
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
[E|B]
 2004-01-11 18:36
#818 #818
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Hab da mal was gebastelt.
Allerdings weiß ich im Moment nicht, welche Fehlermeldung Linux/Unix zurückgibt, wenn Ping fehlschlägt... Ich habe es einmal durch die Windows Meldung "Zeitüberschreitung" ersetzt. Das musst du dann halt ggf. anpassen.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/perl

use warnings;
use strict;

my $result = `ping 127.0.0.1`;
if($result =~ /Zeitüberschreitung{4}/gi){
open(M, "|/use/lib/sendmail -t") or die "Can't open Sendmail!";
print M "From: ping\@check.de\n";
print M "To: your\@email.de\n";
print M "Subject: [Ping failed!]\n\n";
print M "Ping wurde nicht erfolgreich ausgefuehrt!";
close(M);
print "Ping nicht erfolgreich! E-Mail wurde versandt!";
}else{
print "Ping erfolgreich!";
}
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
Dubu
 2004-01-11 18:45
#819 #819
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
@[E|B]: Es gibt Net::Ping, MIME::Lite, Mail::Send, Mail::Mailer etc. ...

Edit: Und dein externes Ping wird unter Unix/Linux uebrigens ewig laufen.\n\n

<!--EDIT|Dubu|1073839538-->
[E|B]
 2004-01-11 18:55
#820 #820
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Das der Ping unendlich läuft hatte ich beinahe erwartet.
Wieso sollte ich ein Mail Modul benutzen wenn ich auch Sendmail direkt ansprechen kann?
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
Strat
 2004-01-11 20:17
#821 #821
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
@E|B: wieso soll man was allgemeines schreiben, wenn doch eh auf einem bestimmten system was installiert ist, das man fuer sowas "missbrauchen" kann?
ich versuche, soweit wie moeglich so zu programmieren, dass es unter moeglichst vielen betriebssystemen wie moeglich laeuft. wenn sendmail vorhanden ist, kann man es ruhig verwenden. ich habe jedoch schon viele unix-kisten gesehen, auf denen sendmail gar nicht vernuenftig konfiguriert war. oder was macht man da z.B. unter Windows? da sollte man wohl eher einen smtp-weg bauen, und nur, wenn sendmail vorhanden ist, es dann auch verwenden (z.B. ueber konfigurationsdatei...)


Fuer Ping wuerde ich ebenso CPAN:Net::Ping verwenden, nicht das systemkommando
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
cc
 2004-01-11 20:39
#822 #822
User since
2004-01-09
55 Artikel
BenutzerIn
[default_avatar]
hallo

script habe angepasst, schickt aber keine mails.
habe keine fehlermeldungen und pfad zu sendmail stimmt exakt.
benutze linux SuSE 8.2
verstehe aber nicht an was es liegen kann

übrigens mit ping -c4 X.X.X.X macht unter linux keine ewig
schleife
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/perl

use warnings;
use strict;

my $result = `ping -c 4 X.X.X.X`;
if($result =~ /Zeitüberschreitung{4}/gi){
open(M, "|/usr/sbin/sendmail -t") or die "Can't open sendmail!";
print M "From: root\@mydomain.de\n";
print M "To: administrator\@mydomain.de\n";
print M "Subject: [Ping failed!]\n\n";
print M "Ping wurde nicht erfolgreich ausgefuehrt!";
close(M);
print "Ping nicht erfolgreich! E-Mail wurde versandt!";
}else{
print "Ping erfolgreich!";
}

hat jemand vielleicht eine Idee, an was es liegt ?

gruss
cc\n\n

<!--EDIT|cc|1078578832-->
KKO
 2004-01-11 21:31
#823 #823
User since
2003-11-05
124 Artikel
BenutzerIn

user image
aus dem script heraus musst du doch einen system-aufruf machen und dann wird wohl auch in dem $result auch nix drinstehen.
und dann kann es noch am "ü" liegen... und dem zeichensatz
ich weiß ja nicht wie das unter linux läuft...aber so würde es unter windows funktionieren:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use warnings;
use strict;

system ("ping 192.168.0.3 >result.txt");

open (RES,"result.txt");
my @res=<RES>; close RES;
my $test=0;

foreach my $line(@res){
if($line=~ /berschreitung der Anforderung/ig){$test++}
}

if($test ==4){
        print "Ping nicht erfolgreich! E-Mail wurde versandt!";
}else{
        print "Ping erfolgreich!";
}
Gruß
KKO
[E|B]
 2004-01-11 21:44
#824 #824
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
@KKO

Wieso leitest du den Output von "system" Befehl in eine Datei und liest dann den Inhalt von dort?
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
KKO
 2004-01-11 21:55
#825 #825
User since
2003-11-05
124 Artikel
BenutzerIn

user image
@EB .. weil weder @res noch $res = system ("ping.......") einen inhalt haben.
Gruß
KKO
<< |< 1 2 3 >| >> 26 Einträge, 3 Seiten



View all threads created 2004-01-11 17:49.