Я запускаю tcpdump
в подпроцесс вроде этого:
pcap_process = subprocess.Popen(['tcpdump', '-s 0', '-w -', 'tcp'],
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
Аргумент -w -
важен: он сообщает tcpdump
, что нужно распечатать полученный файл .pcap в stdout
.
I затем перейдите на веб-сайт, используя urllib.open ()
. После этого я хотел бы убить tcpdump
и поместить все, что он напечатал, в строку. Я пробовал следующее:
pcap_process.terminate()
result = pcap_process.stdout.read() # or readline(), etc.
Но (если я не делаю что-то не так), это не работает; Убил процесс, теперь читать нечего. Если я использую read ()
или communication ()
перед завершением, мой скрипт просто будет сидеть и читать, ожидая завершения tcpdump
(что не будет).
Есть ли способ сделать это (желательно без циклов)?