Email versenden bei bestimmten Zahlen (Bandbreiten)!
Email versenden bei bestimmten Zahlen (Bandbreiten)!
Hallo,
also etwas schwer zu Erklären, ich habe ein Script, welches mir die aktuelle Bandbreite meines Internet Zugangs ausgibt. Wenn ich es ausführe entstehen 2 Dateien in.txt und out.txt.
Der Inhalt sieht so aus
in.txt
Current bandwidth utilization 0.10 Mbit/s
out.txt
Current bandwidth utilization 0.08 Mbit/s
Nun möchte ich gerne ein Script so Programmieren, dass es mir, wenn die Bandbreite eine Gewisse Zahl erreicht, eine E-Mail sendet!
Denke das müsste irgendwie mit if und elseif zu machen sein, habe aber leider nicht sehr viel Ahnung von if elseif usw. Wäre für ein paar Tips sehr Dankbar!!
mfg
Andre
also etwas schwer zu Erklären, ich habe ein Script, welches mir die aktuelle Bandbreite meines Internet Zugangs ausgibt. Wenn ich es ausführe entstehen 2 Dateien in.txt und out.txt.
Der Inhalt sieht so aus
in.txt
Current bandwidth utilization 0.10 Mbit/s
out.txt
Current bandwidth utilization 0.08 Mbit/s
Nun möchte ich gerne ein Script so Programmieren, dass es mir, wenn die Bandbreite eine Gewisse Zahl erreicht, eine E-Mail sendet!
Denke das müsste irgendwie mit if und elseif zu machen sein, habe aber leider nicht sehr viel Ahnung von if elseif usw. Wäre für ein paar Tips sehr Dankbar!!
mfg
Andre
Re: Email versenden bei bestimmten Zahlen (Bandbreiten)!
Hi,
das Skript muss die beiden Zahlen (im Bsp. 0.10 und 0.08) ja irgendwo herkriegen. Mach doch einfach eine Abfrage rein, in PHP in etwa so:
das Skript muss die beiden Zahlen (im Bsp. 0.10 und 0.08) ja irgendwo herkriegen. Mach doch einfach eine Abfrage rein, in PHP in etwa so:
Code: Select all
if ($zahl > 0.5)
mail('me@domain.de', 'Bandbreitenueberschreitungsbenachrichtigung', 'Die Bandbreitennutzung betraegt zur Zeit '.$zahl.' MBit pro Sekunde');
Re: Email versenden bei bestimmten Zahlen (Bandbreiten)!
ja nur wie setz ich die Variable $zahl ?
Danke
Danke
-
darkspirit
- Posts: 553
- Joined: 2002-10-05 16:39
- Location: D'dorf
- Contact:
Re: Email versenden bei bestimmten Zahlen (Bandbreiten)!
Welche Scriptsprache soll es denn werden? Shell-Script, Perl, PHP?
Wenn es bei PHP bleiben soll, dann schau dich im Manual mal nach "fopen", "fread" und "fclose" um..
Wenn es bei PHP bleiben soll, dann schau dich im Manual mal nach "fopen", "fread" und "fclose" um..
Re: Email versenden bei bestimmten Zahlen (Bandbreiten)!
also eigentlich soll es ein Shellscript werden, welches mit einem Cronjob zur überprüfung alles 30 min ausgeführt werden soll.
mfg
Andre
mfg
Andre
Re: Email versenden bei bestimmten Zahlen (Bandbreiten)!
Hi,
ich dachte, du hast schon ein Skript? In welcher Sprache ist das denn geschreibselt?
ich dachte, du hast schon ein Skript? In welcher Sprache ist das denn geschreibselt?
Re: Email versenden bei bestimmten Zahlen (Bandbreiten)!
ich hab bis jetzt
bwbar - http://www.kernel.org/pub/software/web/bwbar/
laufen welches die zwei dateien erstellt und mit dem oben beschriebenen Inhalt versieht.
bwbar - http://www.kernel.org/pub/software/web/bwbar/
laufen welches die zwei dateien erstellt und mit dem oben beschriebenen Inhalt versieht.
Re: Email versenden bei bestimmten Zahlen (Bandbreiten)!
du könntest die bwbar.c um schreiben das er nur die die zahl anzeigt =)
und dann per fopen ausliest !
bwbar.c auf machen und "...if ( ubar ) {..." suchen das dann ersetzen durch:
und dann per fopen ausliest !
bwbar.c auf machen und "...if ( ubar ) {..." suchen das dann ersetzen durch:
if ( ubar ) {
fprintf(ubar, "%sn", bwmea$
fclose(ubar);
rename(t_tmp, text_file);
denk ich mal :><?PHP
$datei = "out.txt";
$fp = fopen($datei,"r");
$zahl = fgets($fp,"1024");
fclose($fp);
if ($zahl > 10)
mail('me@domain.de', 'Bandbreitenueberschreitungsbenachrichtigung', 'Die Bandbreitennutzung betraegt zur Zeit '.$zahl.' MBit/s pro Sekunde');
?>
Last edited by valior on 2004-02-02 16:43, edited 1 time in total.
Re: Email versenden bei bestimmten Zahlen (Bandbreiten)!
Hi,
dann empfehle ich dir eine Kombination aus
cat, grep, cut, awk, evtl. noch dc und mail
Um dir mal kurz zu zeigen, wie mächtig man damit Sachen machen kann:
gibt die Anzahl der erfolgreich ausgelieferten Mails in den letzten 5 Minuten zurück, alles eine Zeile. Damit sollte auch dein Problem lösbar sein:
Hiermit kriegst du die reine Zahl:
Das kannst du weiterleiten nach awk oder direkt Mail oder so...
Sollte irgendwie machbar sein, die man-Seiten sind deine Freunde ;-)
Gruß,
Dominik
dann empfehle ich dir eine Kombination aus
cat, grep, cut, awk, evtl. noch dc und mail
Um dir mal kurz zu zeigen, wie mächtig man damit Sachen machen kann:
Code: Select all
cat /var/log/mail.log |grep "delivery [[:digit:]]{3,}: success"|cut -d" " -f1,2,3 | date +"%s" -f - | gawk '$1 > (systime()-300){print $1}' |grep -c .
Hiermit kriegst du die reine Zahl:
Code: Select all
cat in.txt |cut -d" " -f4
Sollte irgendwie machbar sein, die man-Seiten sind deine Freunde ;-)
Gruß,
Dominik
Re: Email versenden bei bestimmten Zahlen (Bandbreiten)!
Hallo,
soweit geht es nun ich lese nun nur die Zahl mit dem Befehl
cat in.txt |cut -d " " -f5
aus. Habe ich allerdings eine Zahl unter 10 (10.00) beispielsweise 5 (ausgegeben als 5.00) liest er gar nichts aus, d.h. das ergebniss ist leer.
Hier nochmal die zwei Varianten mit 10 und 5
Andere Frage:
Auschnitt aus der PHP Datei:
Leider funktioniert es mit 'Die Bandbreitennutzung betraegt zur Zeit $zahl MBit/s' nicht.
Dort wird in der E-Mail nicht die Zahl, sondern einfach nur $zahl ausgegeben, woran liegt das?
Danke
mfg
Andre
soweit geht es nun ich lese nun nur die Zahl mit dem Befehl
cat in.txt |cut -d " " -f5
aus. Habe ich allerdings eine Zahl unter 10 (10.00) beispielsweise 5 (ausgegeben als 5.00) liest er gar nichts aus, d.h. das ergebniss ist leer.
Hier nochmal die zwei Varianten mit 10 und 5
Code: Select all
Current bandwidth utilization 5.00 Mbit/s
Current bandwidth utilization 10.00 Mbit/s
Auschnitt aus der PHP Datei:
Code: Select all
$datei = 'out_traffic_email';
$fp = fopen($datei,'r');
$zahl = fgets($fp,'1024');
fclose($fp);
$to_email = 'user@domain.net';
$subject = 'subject';
$message = 'Die Bandbreitennutzung betraegt zur Zeit $zahl MBit/s';
if ($zahl > 1){
mail($to_email,$subject,$message);
Dort wird in der E-Mail nicht die Zahl, sondern einfach nur $zahl ausgegeben, woran liegt das?
Danke
mfg
Andre
Re: Email versenden bei bestimmten Zahlen (Bandbreiten)!
Hi,
das ist richtiges PHP-Verhalten:
Variablen in "" werden ausgewertet, solche in '' nicht.
Also schreibst du entweder
oder
das ist richtiges PHP-Verhalten:
Variablen in "" werden ausgewertet, solche in '' nicht.
Also schreibst du entweder
Code: Select all
$message = "Die Bandbreitennutzung betraegt zur Zeit $zahl MBit/s";
Code: Select all
$message = 'Die Bandbreitennutzung betraegt zur Zeit '.$zahl.' MBit/s';
Re: Email versenden bei bestimmten Zahlen (Bandbreiten)!
HI,
das klappt schonmal ;). Danke!
Wie sieht es aus, wenn ich beim ersten Prüfen noch keine E-Mail erhalten will, sondern erst nach einem erneuten Prüfen nach ca. 10 Minuten. Das müsste ich dann irgendwie mit einer if schleife in der if schleifen machen?
Wäre schön wenn mir jmd ein Beispiel dazu geben könnte.
Vielen Dank
mfg
Andre
das klappt schonmal ;). Danke!
Wie sieht es aus, wenn ich beim ersten Prüfen noch keine E-Mail erhalten will, sondern erst nach einem erneuten Prüfen nach ca. 10 Minuten. Das müsste ich dann irgendwie mit einer if schleife in der if schleifen machen?
Wäre schön wenn mir jmd ein Beispiel dazu geben könnte.
Vielen Dank
mfg
Andre