Próbuję obsłużyć dane wyjściowe tcpdump w pythonie.Obsługa wyjścia tcpdump w pythonie
Potrzebuję uruchomić tcpdump (która przechwytuje pakiety i podaje mi informacje) i odczytuje dane wyjściowe i przetwarza je.
Problem polega na tym, że tcpdump działa nieprzerwanie i muszę przeczytać informacje o pakiecie, gdy tylko się pojawią i kontynuować.
Próbowałem zaglądać do podprocesu python i próbowałem wywoływać tcpdump używając popen i wypuszczając stdout, ale to nie działa.
Wszelkie wskazówki, jak to zrobić.
import subprocess
def redirect():
tcpdump = subprocess.Popen("sudo tcpdump...", stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)
while True:
s = tcpdump.stdout.readline()
# do domething with s
redirect()
Czy możesz przesłać swój kod do tej pory? Dzięki. –
można [użyć pseudo-tty do wymuszenia wyjścia buforowanego linii] (http://stackoverflow.com/a/12471855/4279) – jfs