[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

RE: onlinecalc - $BYTES_RCVD




From: Marcus Jodorf [mailto:debian.user.de@killfile.de]

> Alexander Rose <morem@gmx.de> schrieb:
>
> > ich benutze onlinecalc und habe deswegen die folgende zeile bei mir in
> > der ip-down stehen:
> >
> > /bin/echo $DATE $CONNECT_TIME $BYTES_SENT $BYTES_RCVD >>
> /var/log/ppp-usage
> >
> > bis gestern hat auch alles gut geklappt, doch heute steht mit einemmal
> > für den letzten eintrag in der /var/log/ppp-usage ein NEGATIVER wert
> > für $BYTES_RCVD!
> > hat jemand einen schimmer was da passiert ist?
>
> Überlauf bei 2 GB. Du hast also mehr als 2 GB durch die Leitung gejagt.
> Es gibt dazu einen Patch für den pppd, der das behebt, aber der ist
> Quatsch, denn spätestens bei 4 GB passiert der nächste Überlauf im
> Kernel und das Problem stellt sich von Neuem.
>
> Die 2 GB Grenze zumindest kannst Du aber mit zwei kleinen Zeilen im
> onlinecalc Skript auch selber ausbügeln, ohne am pppd aufwendig
> rumpatchen zu müssen. Und die dann geltende 4 GB Grenze dürfte auch für
> die meisten DSL Verbindungen großzügig genug sein.
>
> Ich habe jetzt keinen Patch angefertigt, aber der Ausschnitt im Skript
> sieht so aus und dürfte leicht zu lokalisieren sein:
>
> ,----[ onlinecalc Ausschnitt ]
> | echo -e "\nPPP-Usage $RANGE "
> | grep "$PARAM" /var/log/ppp-usage |
> |  awk 'BEGIN { total=0 }
> |  NF == 5 {
> |  TIME=TIME+$3
> |  FULLMINS=FULLMINS+int($3/60)+1
> |  if (int($3/60)==(($3/60)*1000)/1000) FULLMINS=FULLMINS-1
> |* if ($4<=0) $4=-$4+2147483648
> |* if ($5<=0) $5=-$5+2147483648
> |  SEND=SEND+$4
> |  RECV=RECV+$5
> |  }
> `----
>
> Die beiden Zeilen mit dem Sternchen gleichen den 2 GB Überlauf aus.
> Einfach (ohne Sternchen nat.) bei Dir in's Skript einfügen.
> Dürfte einfacher als das Patchen des pppd sein.

Herzlichen Dank, hat wunderbar geklappt. Ich musste allerdings das Prinzip
auf die PHP Version von Onlinecalc anwenden (hatte verschwiegen, das ich die
benutze). Dort muss man folgende Zeilen mit den Sternchen ergänzen:

---online.php Ausschnitt1:
		} //olddat
            $zeit=$zeit+$tmp[2];
          * if ($tmp[3]<=0){$tmp[3]=-$tmp[3]+2147483648;}
            $sent=$sent+$tmp[3];
          * if ($tmp[4]<=0){$tmp[4]=-$tmp[4]+2147483648;}
            $rcvd=$rcvd+$tmp[4];
            $verb++;
            $olddat=$dat;
---

und

---online.php Ausschnitt1:
if($dat==$monat) {
             *  if ($tmp[4]<=0){$tmp[4]=-$tmp[4]+2147483648;}
                $lrcvd=number_format($tmp[4]/1024/1024,2,'.',' ');
             *  if ($tmp[3]<=0){$tmp[3]=-$tmp[3]+2147483648;}
                $lsent=number_format($tmp[3]/1024/1024,2,'.',' ');
                $ltraf=number_format(($tmp[3]+$tmp[4])/1024/1024,2,'.',' ');
                echo("<tr><td>".$anz."</td><td>");
                zeitberechnung($tmp[2]);


mfg alex




Reply to: