script für datentransfer
script für datentransfer
Hallo,
Ich brauche ein script welches pakete von einem bestimmten port in textfiles schreibt. (perl oder shell wäre schön)
Ich habe schon ein script, dieses funktioniert aber nicht richtig, will heißen, es lässt nur 50% der anfragen auch durch.
Danke
Ich brauche ein script welches pakete von einem bestimmten port in textfiles schreibt. (perl oder shell wäre schön)
Ich habe schon ein script, dieses funktioniert aber nicht richtig, will heißen, es lässt nur 50% der anfragen auch durch.
Danke
-
- Posts: 5923
- Joined: 2004-05-23 12:53
Re: script für datentransfer
Du suchst netcat (oder eines seiner Derivate wie nc6 oder socat).
Re: script für datentransfer
netcat benutze ich im moment, nur geht es nicht richtig.
Re: script für datentransfer
Definiere "geht nicht richtig" - vielleicht lässt sich dazu dann mehr sagen.
Alternativen zu nc & Co: Du könntest den (x)inetd einspannen, der nur ein einfaches Protokoll-Skript ansteuert.
Wenn's anspruchsvoller werden soll, kannst Du das auch mit ein paar Zeilen Python-Code erledigen (davon ausgehend, dass es als Daemon laufen soll):Den Port (hier im Beispiel 50000 auf allen Interfaces) und die Buffer Size müsstest Du natürlich noch an Deine Bedürfnisse anpassen; oder ggf. auf Byte-weises einlesen per Schleife bis zu einem Terminatorzeichen umstellen (hängt vom tatsächlichen Einsatzzweck ab).
Alternativen zu nc & Co: Du könntest den (x)inetd einspannen, der nur ein einfaches Protokoll-Skript ansteuert.
Wenn's anspruchsvoller werden soll, kannst Du das auch mit ein paar Zeilen Python-Code erledigen (davon ausgehend, dass es als Daemon laufen soll):
Code: Select all
#!/usr/bin/env python
import SocketServer
class MyHandler(SocketServer.BaseRequestHandler):
def handle(self):
buff_size = 128
while True:
buff = self.request.recv(buff_size)
if buff:
fobj = open("ausgabe.txt", "ab")
fobj.write(buff)
fobj.close()
else:
break
server = SocketServer.ThreadingTCPServer(("", 50000), MyHandler)
server.serve_forever()
Last edited by daemotron on 2009-01-16 13:32, edited 1 time in total.
Re: script für datentransfer
Das Problem is, das netcat aus irgend einem Grund nur etwa 50% der anfragen auch durchlässt und in die txt schreibt.
Ich hab das auf einem vserver liegen.
Ich hab das auf einem vserver liegen.
Re: script für datentransfer
Wie rufst Du denn netcat auf? Nutzt Du die -o <Datei> Option?
Um noch mal ganz sicher zu gehen, dass ich richtig verstanden habe, was Du vorhast: Du möchtest auf einem bestimmten Port eingehenden Traffic (TCP oder UDP?) abgreifen und in eine Datei speichern. Der Port wird von keinem anderen Dienst genutzt, so dass Du netcat mit der Option -l verwenden kannst... richtig?
Um noch mal ganz sicher zu gehen, dass ich richtig verstanden habe, was Du vorhast: Du möchtest auf einem bestimmten Port eingehenden Traffic (TCP oder UDP?) abgreifen und in eine Datei speichern. Der Port wird von keinem anderen Dienst genutzt, so dass Du netcat mit der Option -l verwenden kannst... richtig?
Re: script für datentransfer
Genau das tut mein kleines Python-Skript oben dochmatzewe01 wrote:Ich würde es z.B. mit Perl machen und einen eigen dienst aufsetzen.
Re: script für datentransfer
Da geht's mir mit Perl ähnlich... ich versteh immer hinterher die Programme nicht, die ich damit geschieben habe 8)
Ich könnte jetzt noch ne Implementierung in C anbieten, aber die wird 'n bissl länger :D
Ich könnte jetzt noch ne Implementierung in C anbieten, aber die wird 'n bissl länger :D
Re: script für datentransfer
Hi,
netcat habe ich bisher so benutzt:
while :; do nc -l -p 2009 >> /home/xxx/123.txt; done
Das Pythonscript kann ich irgendwie leider nicht ausführen. Ich bekomme keine Berechtigung, dann benutzt ich chmod u+x file, anschließend ./scriptname, aber dann kommt Datei oder Verzeichnis konnte nicht gefunden werden.
Bitte um Hilfe :-)
netcat habe ich bisher so benutzt:
while :; do nc -l -p 2009 >> /home/xxx/123.txt; done
Das Pythonscript kann ich irgendwie leider nicht ausführen. Ich bekomme keine Berechtigung, dann benutzt ich chmod u+x file, anschließend ./scriptname, aber dann kommt Datei oder Verzeichnis konnte nicht gefunden werden.
Bitte um Hilfe :-)
Re: script für datentransfer
So kann immer nur eine Verbindung zurzeit laufen.cumsh0t wrote:netcat habe ich bisher so benutzt:
while :; do nc -l -p 2009 >> /home/xxx/123.txt; done
Lass es über (x)inetd laufen.
Re: script für datentransfer
Erm, hab xinetd nun installiert. Weiss aber nicht welche Parameter ich brauche bzw. welche Settings ich in der Configfile haben muss. Hat jemand da evtl was?
Re: script für datentransfer
Klingt, als ob gar kein Python-Interpreter installiert wäre...cumsh0t wrote:Das Pythonscript kann ich irgendwie leider nicht ausführen. Ich bekomme keine Berechtigung, dann benutzt ich chmod u+x file, anschließend ./scriptname, aber dann kommt Datei oder Verzeichnis konnte nicht gefunden werden.
Bitte um Hilfe :-)
Re: script für datentransfer
Hi,
rufe ich das Pythonscript mit "python script.py" auf, bekomme ich folgende Fehlermeldung:
Was kann ich dagegeben tun? Google gibt nichts wirklich brauchbares aus.
rufe ich das Pythonscript mit "python script.py" auf, bekomme ich folgende Fehlermeldung:
Code: Select all
Traceback (most recent call last):
File "socket.py", line 3, in <module>
import SocketServer
File "/usr/lib/python2.5/SocketServer.py", line 132, in <module>
import socket
File "/home/sro/socket.py", line 5, in <module>
class MyHandler(SocketServer.BaseRequestHandler):
AttributeError: 'module' object has no attribute 'BaseRequestHandler'
Re: script für datentransfer
Bitte prüfe noch mal, ob Du das Skript korrekt wie oben angegeben übernommen hast (insbesondere auf die Einrückungen achten, die sind bei Python wichtig!). Falls das Skript korrekt ist, hast Du ein Problem mit Deinem Python-Interpreter. In dem Fall bitte mal die Interpreter-Shell aufrufen:Interpreter mit Ctrl+D beenden. Die Eingaben oben sollten ohne Fehler akzeptiert werden. Falls nicht, bitte Python über Deinen Paketmanager noch mal neu installieren (ich wette aber ein virtuelles Bier auf einen Tipp-/Kopierfehler im Skript)
Code: Select all
$ python
>>> import SocketServer
>>> class MyHandler(SocketServer.BaseRequestHandler):
... def handle(self):
... pass
...
Re: script für datentransfer
Hallo !,jfreund wrote:Bitte prüfe noch mal, ob Du das Skript korrekt wie oben angegeben übernommen hast (insbesondere auf die Einrückungen achten, die sind bei Python wichtig!). Falls das Skript korrekt ist, hast Du ein Problem mit Deinem Python-Interpreter. In dem Fall bitte mal die Interpreter-Shell aufrufen:Interpreter mit Ctrl+D beenden. Die Eingaben oben sollten ohne Fehler akzeptiert werden. Falls nicht, bitte Python über Deinen Paketmanager noch mal neu installieren (ich wette aber ein virtuelles Bier auf einen Tipp-/Kopierfehler im Skript)Code: Select all
$ python >>> import SocketServer >>> class MyHandler(SocketServer.BaseRequestHandler): ... def handle(self): ... pass ...
die Eingaben werden problemlos akzeptiert. Habe auch das Script eindeutig richtig kopiert. Funktioniert jedoch leider nicht. Was könnte ich noch machen?
Re: script für datentransfer
Tja, das kann nicht sein. Du hast in den Interpreter genau das eingegeben, worüber er im Skript angeblich stolpert => das schließt sich gegenseitig aus. Ich kann Deinen Fehler hier jedenfalls nicht reproduzieren (weder mit Python 2.5 noch mit 2.6, getestet mit Linux (SUSE), FreeBSD und Windows).
Re: script für datentransfer
Hallo ;).
Oh man. Hatte nun Python 2.5.1 und 2.6 auf SuSE probiert und ging nicht. Habe Debian draufgemacht und 2.6 getestet, ging nicht. Die File hieß "socket.py", was wohl der Grund war, da bei Python selbst schon so eine file existiert. Habs umbenannt, jetzt kommt kein Fehler mehr. Leider kommt aber auch nichts an, bzw. wird nichts gespeichert. Wo wird das denn hingespeichert, ins selbe Verzeichnis wie die .py File?
//Edit: Ah, mein TestScript war diesmal fehlerhaft ;). Jetzt funktionierts optimal. Dankeschön alle zusammen :D
Oh man. Hatte nun Python 2.5.1 und 2.6 auf SuSE probiert und ging nicht. Habe Debian draufgemacht und 2.6 getestet, ging nicht. Die File hieß "socket.py", was wohl der Grund war, da bei Python selbst schon so eine file existiert. Habs umbenannt, jetzt kommt kein Fehler mehr. Leider kommt aber auch nichts an, bzw. wird nichts gespeichert. Wo wird das denn hingespeichert, ins selbe Verzeichnis wie die .py File?
//Edit: Ah, mein TestScript war diesmal fehlerhaft ;). Jetzt funktionierts optimal. Dankeschön alle zusammen :D
Re: script für datentransfer
So, weil ich jetzt selber auch ein Tool benötigte, mit dem ich den eingehenden Traffic aus mehreren parallelen TCP-Verbindungen in eine Datei dumpen kann, hab ich mich jetzt mal rangesetzt und das ganze "ordentlich" implementiert, also steuerbar über Kommandozeilenargumente und als v. a. als Daemon. Mehrere parallele Verbindungen werden über Threads geregelt; damit es beim Schreiben des Dumpfile keine Deadlocks gibt, wurde die Schreibarbeit zentralisiert.
Das ganze ist Open Source und natürlich öffentlich zugänglich: http://root-tools.svn.sourceforge.net/v ... g/wiretap/
Die README sollte man sich vielleicht vor der ersten Benutzung zu Gemüte führen; wer es ganz eilig hat, kann auch das Python-Skript (wiretap.py) einfach mit der Option '-h' aufrufen - sollte eigentlich selbsterklärend sein.
Bugreports, Kritik, Anregungen, Wünsche gerne entweder per PM oder über den SourceForge-Tracker
Das ganze ist Open Source und natürlich öffentlich zugänglich: http://root-tools.svn.sourceforge.net/v ... g/wiretap/
Die README sollte man sich vielleicht vor der ersten Benutzung zu Gemüte führen; wer es ganz eilig hat, kann auch das Python-Skript (wiretap.py) einfach mit der Option '-h' aufrufen - sollte eigentlich selbsterklärend sein.
Bugreports, Kritik, Anregungen, Wünsche gerne entweder per PM oder über den SourceForge-Tracker