Page 1 of 1

Email versenden bei bestimmten Zahlen (Bandbreiten)!

Posted: 2004-02-02 14:57
by andre丨
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

Re: Email versenden bei bestimmten Zahlen (Bandbreiten)!

Posted: 2004-02-02 16:12
by suntzu
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:

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)!

Posted: 2004-02-02 16:15
by andre丨
ja nur wie setz ich die Variable $zahl ?

Danke

Re: Email versenden bei bestimmten Zahlen (Bandbreiten)!

Posted: 2004-02-02 16:20
by darkspirit
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..

Re: Email versenden bei bestimmten Zahlen (Bandbreiten)!

Posted: 2004-02-02 16:23
by andre丨
also eigentlich soll es ein Shellscript werden, welches mit einem Cronjob zur überprüfung alles 30 min ausgeführt werden soll.

mfg
Andre

Re: Email versenden bei bestimmten Zahlen (Bandbreiten)!

Posted: 2004-02-02 16:29
by suntzu
Hi,

ich dachte, du hast schon ein Skript? In welcher Sprache ist das denn geschreibselt?

Re: Email versenden bei bestimmten Zahlen (Bandbreiten)!

Posted: 2004-02-02 16:33
by andre丨
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.

Re: Email versenden bei bestimmten Zahlen (Bandbreiten)!

Posted: 2004-02-02 16:35
by valior
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:
if ( ubar ) {
fprintf(ubar, "%sn", bwmea$
fclose(ubar);
rename(t_tmp, text_file);
<?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');
?>
denk ich mal :>

Re: Email versenden bei bestimmten Zahlen (Bandbreiten)!

Posted: 2004-02-02 16:42
by suntzu
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:

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 .
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:

Code: Select all

cat in.txt |cut -d" " -f4
Das kannst du weiterleiten nach awk oder direkt Mail oder so...
Sollte irgendwie machbar sein, die man-Seiten sind deine Freunde ;-)

Gruß,
Dominik

Re: Email versenden bei bestimmten Zahlen (Bandbreiten)!

Posted: 2004-02-03 16:39
by andre丨
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

Code: Select all

Current bandwidth utilization   5.00 Mbit/s

Current bandwidth utilization   10.00 Mbit/s
Andere Frage:
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);
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

Re: Email versenden bei bestimmten Zahlen (Bandbreiten)!

Posted: 2004-02-03 16:51
by suntzu
Hi,

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";
oder

Code: Select all

$message = 'Die Bandbreitennutzung betraegt zur Zeit '.$zahl.' MBit/s';

Re: Email versenden bei bestimmten Zahlen (Bandbreiten)!

Posted: 2004-02-03 17:15
by andre丨
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