Hi!
Ich schreibe ein Skript das Statistiken aus meinem DSL Modem auslesen und (später dann) via rrd-tool speichern soll.
Zur Zeit schreibe ich den zentralen Block, der auf Anfrage hin die Parameter zurückgibt. Als Argument bekommt die Subroutine den gewünschten Parameter, ermittelt die Daten vom Modem (oder bentutzt bereits gespeicherte Werte) und gibt sie zurück.
Irgendwie haut die Auswahl der Parameter jedoch nicht hin.
Mein Code dafür sieht so aus:
more (6.6kb)
Der Aufruf im Programm erfolgt so:
my ($snr_dn,$snr_up) = dsl_cache_basicstats("snr");
my ($att_dn,$att_up) = dsl_cache_basicstats("att");
my ($pwr_dn,$pwr_up) = dsl_cache_basicstats("pwr");
print "DSL Werte:
SNR: $snr_dn / $snr_up
ATT: $att_dn / $att_up
PWR: $pwr_dn / $pwr_up
";
Dinge die ich nicht mit hier im Post habe:
sub "debug" - prüft ob globale Variable "debug == 1" und gibt ggf ihre Argumente mit "print" aus
sub "comm_open" - baut eine Verbindung zum DSL Modem auf und gibt ein Handle zurück (nutzt Net::Telnet)
sub "comm_close" - beendet die Telnet Verbindung wieder
subs rwhite, lwhite - entfernen leerzeichen aus strings
globale Variable $commstatus bedeutet: 0->Keine Verbindung, 1-> Verbindung offen, 2->login, 3-> authientifizierung, 9->Verbindung steht und ist für Befehle bereit
Leider gibt das meine Routine nur die Werte für SNR zurück, egal mit welchem Argument ich sie aufrufe. Selbst mit unsinnigem Parameter - bei denen ich die entsprechende Meldung erhalten muesste, liefert mir die Routine nur die snr Werte zurueck, er landet auch jedesmal beim Auswahlverfahren bei "snr".
Ich benutze strict und warnings und bin sicher das das irgendwas dummes, einfaches ist, aber ich komm einfach nicht drauf...
Ich würde mich über einen Stupser in die richtige Richtung freuen, da sitz ich nun schon seit gestern dran und komm nicht weiter...
Grüße,
Errorsmith
modedit Editiert von pq: more-tag um script hinzugefügt
Last edited: 2012-07-21 16:22:27 +0200 (CEST)