eth0 auslese und IP Verbindungen in php aufzählen/listen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
DataLifeNow
Beiträge: 4
Registriert: 04.09.2011 23:24:09
Wohnort: Wuppertal
Kontaktdaten:

eth0 auslese und IP Verbindungen in php aufzählen/listen

Beitrag von DataLifeNow » 04.09.2011 23:42:35

Hallo Zusammen...

Ich habe ein vielleicht für Profis lächerliches Problem...
Hoffentlich habe ich es auch noch richtig gepostet... :)
Leider komme ich so im Moment nicht weiter...

Ich habe hier folgenden Server:

Debian 6.0
Linux 2.6.26-2-amd64 auf x86_64

mit ner ganz guten Portion Power auf der Hardware.... (Hetzner-Root)

Nun müßte ich folgende Problematik lösen:

Die Ports:

8000 (Shoutcast Video)
8415 (Shoutcast Audio)
1935 (Red5 Video)


müssten auf die Anzahl der Connections ausgelesen werden.
Sie sollten in einer php Datei anzeigbar sein und sich ggf.
selbständig im 30 bzw. 60 Sek. Rhythmus automatisch aktualisieren.

ist dies möglich, dass auf der php Seite dann nur noch die Info erscheint:

8000 XX Verbindungen
8415 XX Verbindungen
1935 XX Verbindungen

Zusammen XXX Verbindungen.

Wobei es hier genial wäre wenn doppelte IP Verbindungen nur einmal gezählt werden.
Also jede IP de Zugreift darf auch insgesamt nur einmal gezählt sein.

Wäre super wenn so etwas klappen würde ohne das Rad gleich neu erfinden zu müssen...

Vielen Dank aber schon mal im voraus für die Bemühungen und ggf. Ratschläge

Sven
Sorry dass ich so blöd Frage, aber ich würde es einfach nur gerne wissen :-)

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: eth0 auslese und IP Verbindungen in php aufzählen/listen

Beitrag von syssi » 05.09.2011 07:46:13

Hat Shoutcast keine Statistik-Plugins etc. woher du die Information holen kannst? Ein Loesungsweg waere ein regelmaessiges "netstat -tn | grep 8000 | wc -l". Der Output wird dann in eine Datei gelegt oder eine Datenbank geschrieben, wo PHP es sich dann abholen kann.

DataLifeNow
Beiträge: 4
Registriert: 04.09.2011 23:24:09
Wohnort: Wuppertal
Kontaktdaten:

Re: eth0 auslese und IP Verbindungen in php aufzählen/listen

Beitrag von DataLifeNow » 05.09.2011 10:52:15

Okay, mit netstat hatte ich auch schon probiert...

Ja, Shoutcast gibt diese Daten aus...
der Red5 gibt sie auch aus...

Leider sind beide in jeweils verschiedenen Ausgaben zu finden und beim Red5 müßte ich den Modis zu viele Rechte verpassen um sie sehen zu können.
Deshalb meine Frage ob ich alles irgendwie bündeln kann und auf einem Dokument ausgeben kann...

Mit shoutcast funktioniert es z.b mit shoutstats (GPL Shoutstats 0.8.4 http://www.glop.org/shoutstats/) richtig gut,
nur kann ich dort den Red5 auf Port 1935 nicht einbinden... wieso auch immer oder mir fehlt einfach nur dass berühmte Schweizer Taschenmesser :)
Sorry dass ich so blöd Frage, aber ich würde es einfach nur gerne wissen :-)

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: eth0 auslese und IP Verbindungen in php aufzählen/listen

Beitrag von syssi » 05.09.2011 11:11:09

Durch das Fragen von Red5 und Shoutcast wuerdest du halt Ressourcen sparen. Du solltest diese Daten regelmaessig Abfragen und in eine Datenbank eintragen. Auf diese Weise kannst du sie per PHP sehr schnell und einfach Abfragen und darstellen. Von zeitintensiven system-calls wuerde ich dir abraten. Das verlangsamt deine Seite nur unnoetig.

Alternativ koenntest du dich nach einer Monitoring Loesung umsehen (munin, cacti, etc.), welche Plugins fuer die verschiedenen Server besitzt und die Daten sowieso schon fuer dich aggregiert. Ab dann kannst du die beiden Werte auf die gleiche Art und Weise abfragen.

DataLifeNow
Beiträge: 4
Registriert: 04.09.2011 23:24:09
Wohnort: Wuppertal
Kontaktdaten:

Re: eth0 auslese und IP Verbindungen in php aufzählen/listen

Beitrag von DataLifeNow » 05.09.2011 19:27:10

So, ich habe nun mal etwas Experimentiert…
Wenn ich folgenden Befehl eingebe:

Code: Alles auswählen

> netstat -n | grep 1935 | grep ESTABLISHED | wc 
Bekomme ich als Ausgabe:

Code: Alles auswählen

     10      60     800 

Wenn ich das also richtig sehe habe ich zur Zeit der Abfrage 10 Verbindungen die als ESTABLISHED aktiv sind auf Port 1935.
Da ich im Moment den Wald vor lauter Bäumen nicht mehr sehe meine Frage:
Ist dass der richtige bzw. vernünftige Weg ???
Wie bekomme ich es dann genau hin dass mir diese Abfrage alle 60Sek. Ausgeführt wird und nur die Anzahl der Verbindungen (Hier 10) in einer php via Webbrowser sichtbar wird…
Muß ja irgendwie gehen, nur rasselt mein Kopf in alle Richtungen und ich hab zur zeit echt keinen plan mehr…
Sorry dass ich so blöd Frage, aber ich würde es einfach nur gerne wissen :-)

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: eth0 auslese und IP Verbindungen in php aufzählen/listen

Beitrag von syssi » 05.09.2011 19:44:44

Du willst nur Zeilen zaehlen, deshalb solltest du "wc -l" nutzen. Bei netstat interessieren dich nur die TCP/UDP-Verbindungen, deshalb "netstat -tun". Das Ergebnis schreibst du in eine Datei. Sollte sich /tmp im Arbeitsspeicher befinden (tmpfs) und garnicht erst auf die Platte geschrieben werden, umso besser.

Code: Alles auswählen

netstat -tun | grep :1935 | grep ESTABLISHED | wc -l > /tmp/1935connections.txt
Per PHP kannst du diese Datei dann einfach einlesen. Fuer das Ausfuehren alle 60 Sekunden kannst du einen Cronjob anlegen. Alternativ findest du hier einen Schnippsel, wie du ein Bashskript dazu bringst im Hintergrund zu laufen: http://stackoverflow.com/questions/6168 ... 06#6169006

Das Kernstueck deines Skripts waere dann:

Code: Alles auswählen

while true;
do
 netstat -tun | grep :1935 | grep ESTABLISHED | wc -l > /tmp/1935connections.txt
 sleep 60
done

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: eth0 auslese und IP Verbindungen in php aufzählen/listen

Beitrag von ThorstenS » 14.09.2011 07:20:18

Da so ziemlich jedes Script optimierungsfähig ist, will ich mal mein Lieblingstool Debianlsof in den Ring werfen. Damit verkürzt sich der Aufruf für das Zählen von SSH Verbindungen (Port 22) zu: lsof -Pni:22 | grep -c ":22 "
Oder zu sowas sudo grep -c dport=22 /proc/net/nf_conntrack - viele Wege führen nach Rom.

Viel Spaß beim Scripten!

DataLifeNow
Beiträge: 4
Registriert: 04.09.2011 23:24:09
Wohnort: Wuppertal
Kontaktdaten:

Re: eth0 auslese und IP Verbindungen in php aufzählen/listen

Beitrag von DataLifeNow » 15.09.2011 00:03:24

Also ich habe jetzt schon mal den Vorschlag von Syssi ausprobiert...
Wenn ich jetzt wohl aufliste wie ich dass "gangbar" gemacht habe dann schlagen ungefähr 95% von Euch die Hände überm Kopf zusammen und die anderen 5% setzen mich auf die ignore Liste :)

Ich habe die Zeilen zum aufruf meiner Ports in eine bash gepackt, lasse sie mittels cron aufrufen und schwups, pro Port eine TXT Datei im festgelegten Ordner und ne PHP datei kramt sich dass ganze zusammen und schmeißt es im TeamBereich der Webseite in ein kleines Panel (WebSeite ist eine PHP-Fusion aktuellen Datums)

Klappt so wirklich gut, nur beim zählen der Shoutcast Video Zugriffe übertreibt diese Version der Abfrage etwas...
Leider zählt er so noch die Serverinternen Zugriffe, die über 127.0.0.1 laufen und natürlich die Source Connection als sozusagenen User mit...

Im Grunde Funktioniert es also, nur es ist natürlich noch anpassungsfähig :)
Mal sehen vielleicht hat noch jemand von euch nen Vorschlag....
Sorry dass ich so blöd Frage, aber ich würde es einfach nur gerne wissen :-)

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: eth0 auslese und IP Verbindungen in php aufzählen/listen

Beitrag von ThorstenS » 15.09.2011 13:33:42

filter localhost einfach aus: | grep -v 127.0.0.1

Antworten