Форум сайта python.su
0
Всех приветствую!
Возможно тема поднималась, все таки рискну спросить:
Нужно чтобы каждый захваченный пакет tcpdump перенаправлялся в скрипт для обработки, ну или все это в скрипт завернуть:
import subprocess
p = subprocess.Popen("tcpdump -i eth1", shell=True, stdout=subprocess.PIPE)
print p.stdout.read()
Офлайн
221
Открываем Гугл, вводим в поиск запрос “Python subprocess”, первая ссылка на официальную документацию, одна из следующих на мою запись блога где все тоже самое но на русском плюс снабжено примерами.
Учитесь разбираться сами
Вот готовый пример кода, на Винде
# -*- coding: utf-8 -*- import subprocess, datetime p=subprocess.Popen('ping ya.ru -n 4', shell=True, stdout=subprocess.PIPE) s=True while s: s=p.stdout.readline().decode('cp866') print datetime.datetime.now(), s.strip()
2012-10-30 13:28:58.476000
2012-10-30 13:28:58.476000 Обмен пакетами с ya.ru [93.158.134.203] по 32 байт:
2012-10-30 13:28:58.476000
2012-10-30 13:28:59.163000 Ответ от 93.158.134.203: число байт=32 время=679мс TTL=52
2012-10-30 13:29:00.116000 Ответ от 93.158.134.203: число байт=32 время=641мс TTL=52
2012-10-30 13:29:01.132000 Ответ от 93.158.134.203: число байт=32 время=650мс TTL=52
2012-10-30 13:29:02.148000 Ответ от 93.158.134.203: число байт=32 время=670мс TTL=52
2012-10-30 13:29:02.148000
2012-10-30 13:29:02.148000 Статистика Ping для 93.158.134.203:
2012-10-30 13:29:02.148000 Пакетов: отправлено = 4, получено = 4, потеряно = 0 (0% потерь),
2012-10-30 13:29:02.148000 Приблизительное время приема-передачи в мс:
2012-10-30 13:29:02.148000 Минимальное = 641мсек, Максимальное = 679 мсек, Среднее = 660 мсек
2012-10-30 13:29:02.163000
Офлайн
14
lobster, проблема у тебя, видимо, в том, что read() хочет прочесть все сразу и ждет завершения.
Если надо читать построчно, на тройке можно использовать for line in p.stdout, на двойке он глючит
Офлайн
0
JOHN_16 Премного благодарен!
т.е. построчно в цикле, ясно!
Офлайн
14
По ссылке постом выше - альтернативный вариант.
Офлайн