Listen on Port
Listen on Port
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.
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.
-
- Beiträge: 134
- Registriert: 03.02.2011 11:11:21
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Frankfurt
Re: Listen on Port
Code: Alles auswählen
netstat -tupen
Re: Listen on Port
schau dir ntop an.
- Saxman
- Beiträge: 4233
- Registriert: 02.05.2005 21:53:52
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: localhost
Re: Listen on Port
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.
Debian GNU/Linux Anwenderhandbuch | df.de Verhaltensregeln | Anleitungen zum Review und zum Verfassen von Wiki Artikeln.
Re: Listen on Port
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.
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.
Re: Listen on Port
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
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
- 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
hast du schonmal geguckt ob der TS server selber vielleicht ein log hat was man parsen kann?
Code: Alles auswählen
╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!
Re: Listen on Port
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:
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...
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
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...