ForumOnlinezeit von DSL in realtime
Tobias Riewoldt – Samstag, 03. September 2005 09:09 Uhr

Hi Leute.

Evtl. kann mir einer von euch helfen. Ich bin auf der Suche nach einem (PHP) Script das mir anzeigt wie lange ich schon mit dsl online bin. Die Sachen die ich gefunden habe, machen meist einen Eintrag in der ip-down und zeigen mir an wie lange ich online war nachdem ich die Verbindung getrennt habe. Ich würde das gerne in Realtime sehen.

einen verdammt guten ansatz gibt es hier: http://www.rootdir.de/online/

das einzige was mich daran stört ist, das bei Aktuelle Verbind nicht die Onlinezeit steht, sondern das die immer erst angezeigt wird wenn man disconnected.

Kennst jemand etwas ähnliches? Das wäre echt super!
Ach ja, es handelt sich um Linux!

mfg,

toberkel

3 Antworten
Robert Maier – Sonntag, 04. September 2005 14:34 Uhr

Ein Skript kenne ich keins, aber ich kann dir meinen Ansatz verraten:

Wenn der Rechner online geht wird via ip-up.d der aktuelle Zeitpunkt in eine Datei (/var/run/online) geschrieben. Damit das via PHP leicht auszulesen ist mach ich das im UNIX-Format. Also ‘date +%s’.

Wird die Verbindung beendet, wird eine 0 in die Status-Datei geschrieben und ich weiß somit, dass der Rechner offline ist.

Sowas wolltest du doch, oder? Gruß, Robert

Markus Dauberschmidt – Sonntag, 04. September 2005 19:34 Uhr

Probier’s mal damit :-)
(achtung nach 2^32 byte gibt es ein wrap-over…

#!/usr/bin/perl

use strict;

use Proc::ProcessTable;
use Time::localtime;
my $proctable = new Proc::ProcessTable;
my $starttime;
my $sarr;
my $difference;
my $rarr;
my $tm;
my $p;
my $EXTERNAL_INTERFACE = “ppp0”;
my $INTERNAL_INTERFACE = “eth0”;
my $IOPROCESS = “pppd”;

foreach $p ( @{$proctable->table} ) {
if ($p->fname eq $IOPROCESS) {
$starttime = $p->start;
$sarr = localtime($starttime);
$tm = time();
$difference = $tm – $starttime – 3600;
$rarr = localtime($difference);
printf(“\n\nProcess \”$IOPROCESS\” is running for %02d hours %02d min %02d secs (started on %02d.%02d.%02d %02d:%02d:%02d)\n”,$rarr->hour, $rarr->min, $rarr->sec, $sarr->mday,$sarr->mon+1,$sarr-

# Übertragene Bytes ausgeben

my $externalline;
my $internalline;

open (DEV, “

Ulf B. – Montag, 05. September 2005 23:56 Uhr

Hallo toberkel,

hast Du mal /sbin/ifconfig eth0 probiert (geht auch als user, wenn man nur den Status abfragt)? Dort findest Du eigentlich alle wichtigen Infos. Bei mir sieht die Ausgabe etwa so aus:

eth0 Protokoll:Ethernet Hardware Adresse 00:00:00:00:00:00 inet Adresse:192.168.1.2 Bcast:192.168.1.255 Maske:255.255.255.0 inet6 Adresse: 2222::222:2222:2222:2222/64 Gültigkeitsbereich:Verbindung UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3446 errors:0 dropped:0 overruns:0 frame:0 TX packets:2851 errors:0 dropped:0 overruns:0 carrier:0 Kollisionen:0 Sendewarteschlangenlänge:1000 RX bytes:3855048 (3.6 MiB) TX bytes:257741 (251.7 KiB) Interrupt:11 Basisadresse:0x6600 Du brauchst jetzt nur noch anstatt eth0 Dein Internetdevice eintragen (ohne Deviceangabe zeigt ifconfig alle schnittstellen an). Anschließend kann man dann via grep und cut die RX und TX bytes herausfiltern (parameter findest Du mit man ).

Ciao
Ulf