Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 30, 2012 02:08:01

lobster
От:
Зарегистрирован: 2011-06-09
Сообщения: 82
Репутация: +  0  -
Профиль   Отправить e-mail  

tcpdump перенаправление в скрипт

Всех приветствую!
Возможно тема поднималась, все таки рискну спросить:
Нужно чтобы каждый захваченный пакет tcpdump перенаправлялся в скрипт для обработки, ну или все это в скрипт завернуть:

import subprocess
p = subprocess.Popen("tcpdump -i eth1", shell=True, stdout=subprocess.PIPE)
print p.stdout.read()
короче, пока tcpdump не завершится, пакеты не отобразяться. Кстати с ping такая же бойда.
Приведите пожалуйста рабочий пример.



Офлайн

#2 Окт. 30, 2012 03:31:40

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

tcpdump перенаправление в скрипт

Открываем Гугл, вводим в поиск запрос “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



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Окт. 30, 2012 03:52:55

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

tcpdump перенаправление в скрипт

lobster, проблема у тебя, видимо, в том, что read() хочет прочесть все сразу и ждет завершения.

Если надо читать построчно, на тройке можно использовать for line in p.stdout, на двойке он глючит

Офлайн

#4 Окт. 30, 2012 03:52:57

lobster
От:
Зарегистрирован: 2011-06-09
Сообщения: 82
Репутация: +  0  -
Профиль   Отправить e-mail  

tcpdump перенаправление в скрипт

JOHN_16 Премного благодарен!
т.е. построчно в цикле, ясно!



Офлайн

#5 Окт. 30, 2012 03:59:00

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

tcpdump перенаправление в скрипт

По ссылке постом выше - альтернативный вариант.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version