Listen on Port

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
agund
Beiträge: 4
Registriert: 10.04.2011 11:54:01

Listen on Port

Beitrag von agund » 10.04.2011 12:04:19

Ich möchte gerne ein Script schreiben, dass ip adressen auf einen bestimmten Port mitloggt und diese in eine Mysql Datenbak speichert...

nc -l -p XX, habe ich schon versucht nur leider scheint es damit nicht zu gehen.
Auch iptables bietet so ein logging verfahren an, jedoch speichert er dies in einer Textdatei mit datum ..... etc.
Ich möchte nur zb. auf meinem Server alle IP's haben die gerade auf dem Port XX zugreifen und diese dann in meiner Datenbank speichern.

Wäre super wenn mir einer helfen kann.... da ich nicht weiß, wie ich alle ips herausfinde die auf port XX von meinem Server zugreifen.

newdeb
Beiträge: 134
Registriert: 03.02.2011 11:11:21
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Frankfurt

Re: Listen on Port

Beitrag von newdeb » 10.04.2011 13:04:52

Code: Alles auswählen

netstat -tupen

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

Re: Listen on Port

Beitrag von ThorstenS » 10.04.2011 13:27:22

schau dir Debianntop an.

Benutzeravatar
Saxman
Beiträge: 4233
Registriert: 02.05.2005 21:53:52
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: localhost

Re: Listen on Port

Beitrag von Saxman » 10.04.2011 13:36:29

Mit lsof lässt sich bestimmt auch was passendes basteln

Code: Alles auswählen

# lsof -n -P -i :portnummer
"Unix is simple. It just takes a genius to understand its simplicity." - Dennis Ritchie

Debian GNU/Linux Anwenderhandbuch | df.de Verhaltensregeln | Anleitungen zum Review und zum Verfassen von Wiki Artikeln.

agund
Beiträge: 4
Registriert: 10.04.2011 11:54:01

Re: Listen on Port

Beitrag von agund » 10.04.2011 16:32:25

Danke das hat mir schon gut geholfen und es funktioniert auch nur leider nicht in meinem Fall. Warum, weiß ich auch nicht.
Also mein Ziel ist es das Clients die sich mit dem Teamspeak3 verbinden geloggt und mit einem sql update Befehl in die Datenbank gespeichert werden, so dass ich dann weiter mit den ip's arbeiten kann und z.B woanders Leuten Zugriffsrechte oder ähnliches einräumen kann, wenn diese ihre ip in der Datenbank haben bzw. im Teamspeak3 sind.

Beispiel:
Man kommt nicht auf unsere Homepage da nur Leute diese Homepage sehen, wo die ip mit einer der ip's die in der mysql db stehen übereinstimmt.
Also muss derjenige erst ins Teamspeak3 kommen und erst dann hat er Zugriff auf diese Homepage.

Klar ist dieses Beispiel nicht mein Ziel aber sowas in dieser Richtung.
Der Teamspeak3 Port ist ein UDP Port wenn ich das richtig mitbekommen habe.
Also will ich eine Bash Datei schreiben die, die ip von dem Client der connected und diese in die mysql Datenbank speichern.

agund
Beiträge: 4
Registriert: 10.04.2011 11:54:01

Re: Listen on Port

Beitrag von agund » 11.04.2011 11:16:31

habe jetzt versucht mit

netstat -apn |grep ts3server

als Antwort bekomme ich nur:

tcp 0 0 ip:30033 0.0.0.0:* LISTEN 3458/ts3server_linu
tcp 0 0 ip:10011 0.0.0.0:* LISTEN 3458/ts3server_linu
udp 0 0 ip:1010 0.0.0.0:* 3458/ts3server_linu
udp 0 0 ip:9987 0.0.0.0:* 3458/ts3server_linu
udp 0 0 ip:9988 0.0.0.0:* 3458/ts3server_linu
udp 0 0 ip:9999 0.0.0.0:* 3458/ts3server_linu
udp 0 0 ip:8338 0.0.0.0:* 3458/ts3server_linu
udp 0 0 ip:9900 0.0.0.0:* 3458/ts3server_linu
udp 0 0 ip:5555 0.0.0.0:* 3458/ts3server_linu
udp 0 0 ip:55603 ip2:2010 VERBUNDEN 3458/ts3server_linu
udp 0 0 ip:1988 0.0.0.0:* 3458/ts3server_linu
udp 0 0 ip:1990 0.0.0.0:* 3458/ts3server_linu
udp 0 0 ip:1234 0.0.0.0:* 3458/ts3server_linu
udp 0 0 ip:2011 ip2:2010 VERBUNDEN 3458/ts3server_linu

Die ip ip2 ist mir unbekannt... doch dachte ich das ip2 vielleicht ein user ist. Als ich jedoch im Teamspeak nachgeschaut habe waren ca 20 user im ts.
Also müssten mehrere Verbindungen geben....

edit: habe herausgefunden, dass die ip2 eine ip von 4players ist hardy.teamspeak.4p:2010
Teamspeak 3 scheint nur auf dem angegebenen Port zu lauschen und auf dem port x oder standard 30033 das Steaming durchführen.
Nut wenn ich netstat auf port 30033 mache kommt auch nicht viel

Benutzeravatar
Lord_Carlos
Beiträge: 5578
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Re: Listen on Port

Beitrag von Lord_Carlos » 11.04.2011 20:31:15

hast du schonmal geguckt ob der TS server selber vielleicht ein log hat was man parsen kann?

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

agund
Beiträge: 4
Registriert: 10.04.2011 11:54:01

Re: Listen on Port

Beitrag von agund » 12.04.2011 13:35:05

Habe geschaut.... ja kann logs... jedoch nur wenn der Server startet macht er diese logs kurz und bricht dann ab.
Ich habe jedoch jetzt eine Lösung gefunden. Erstmal dachte ich, ich könnte ein Programm mit netcat dazwischen fummeln... jedoch
war das auch nicht das wahre. Also bin ich zu diesem gekommen:

Code: Alles auswählen

#!/bin/bash

for(( ; ; ))
do

sample=(`tcpdump -nqtc 1 src host ip and port x`)

for var in ${sample[3]}
do
        ip=${var%.*} 
done
echo $ip

mysqlvar=${dbquery[0]}
mysqlip=${mysqlvar:3}

if [ "$mysqlip" == "" ]; then
mysql -u user -p pw -D db -e "INSERT INTO tabellenName (zeile) VALUES ('$ip')"
fi

done

Ich kontrolliere damit den Port und versuche dabei die Ausgabe so viel wie möglich zu beschleunigen und zu minimieren.
Das Programm bzw. Script tut jetzt folgendes, es holt sich mit tcpdump alle Verbindungen die am Port 9987 sind. Dann werden die IP's zurecht geschnitten und mit der IP in der Datenbank verglichen, wenn die ip in der Datenbank noch nicht vorhanden ist, so wird diese eingetragen. Das ganze ist in deiner Endlos Schleife, da er nie aufhören soll die ips in die Datenbank zu speichern. Damit wenn er disconnected nicht weiterhin die ip gespeichert wird, wird alle X min die Inhalte der Datenbank gelöscht.

Ich hatte schon bedenken wegen des Scripts, dass es meinen Server etwas beeinträchtigt, deshalb habe ich beim Testen die Auslastung beobachtet, aber es ich nicht so erschreckend wie ich dachte. Das Script fällt bei unserem Server kaum auf.

Trotzdem vielen Dank an euch für eure Hilfe...

Antworten