Уведомления

Группа в Telegram: @pythonsu

#1 Март 22, 2008 22:35:35

mario
От:
Зарегистрирован: 2007-08-04
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Tuple/List при чтении с устройств

Добрый день.

Вопрос такой. К примеру существует у-во (/dev/n), к которому требуется обращаться, чтобы распарсивать информацию в него упавшую.

f=open('/dev/n', ‘r’, 1024) / успешно открывает
while 1:
print f.read() виснет / но просто (f.read(10)) делает успешно

Как лучше это сделать, чтобы эта информация по формату была Turple или List?



Офлайн

#2 Март 22, 2008 23:02:21

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Tuple/List при чтении с устройств

только не виснет, а ждет конца файла и явно недождется =)
Когда читаешь порциями по 10 байт - явно лучше =)

Распарсивать придется налету. А уж как - зависит от протокола данных, которые шлет это /dev/n



Офлайн

#3 Март 22, 2008 23:19:10

mario
От:
Зарегистрирован: 2007-08-04
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Tuple/List при чтении с устройств

Там различный сетевой трафик, приоритетно ethernet. Можно ли сделать чтобы как то интерактивно это отображалось?



Отредактировано (Март 22, 2008 23:19:35)

Офлайн

#4 Март 22, 2008 23:49:32

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Tuple/List при чтении с устройств

так-как информация у тебя там не текстовая а двоичная, думаю что лучше и файл открывать в двоичном режиме.
типа так

f = open(('/dev/n', 'rb')
mario
Можно ли сделать чтобы как то интерактивно это отображалось?
ну выводи на экран =)
print f.read(10)
Правда символы там будут часто попадаться непечатные, поэтому наверное лучше перевести их в HEX например.



Офлайн

#5 Март 23, 2008 00:22:50

mario
От:
Зарегистрирован: 2007-08-04
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Tuple/List при чтении с устройств

Это я понимаю, спасибо. Но это не совсем интерактивно тогда (
Мне нужно, чтобы при прихоже на у-во новой информации она бы выдавалась через питоний скрипт



Офлайн

#6 Март 23, 2008 00:46:10

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Tuple/List при чтении с устройств

не очень понимаю что ты имеешь ввиду.
что значит интерактивно и куда выдавалась?



Офлайн

#7 Март 23, 2008 11:32:42

mario
От:
Зарегистрирован: 2007-08-04
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Tuple/List при чтении с устройств

На у-во попадает различный сетевой трафик, приоритетно Ethernet.
Требуется обращаться к ниму скриптом на питоне, открывать его и считывать информацию, которая туда попадает. Scapy, py-pcapy, пожалуйста не предлагать. Меня интересует сам подход к тому, как открыть (понял как открыть), как считывать и сразу выводить (представьте как работает tcpdump. такой глобальной работы мне не надо, но суть чтобы читать и выводить, то что считали (но там есть нечитаемые символы имхо)).

Это циклом надо организовывать ведь? Имел ли кто дело с struct для задания структуры и парсингом по структуре?



Отредактировано (Март 23, 2008 11:44:10)

Офлайн

#8 Март 23, 2008 12:53:24

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Tuple/List при чтении с устройств

ну да. я думал насчет цикла ты сам уж подставишь. :)

f = open('/dev/n', 'rb')

while 1:
s = f.read(1) #читаем по одному (пока так - для упрощения) символу
print hex(ord(s)).replace('0x', ''), #переводим в 16-ричный вид и выводим на экран



Отредактировано (Март 24, 2008 01:22:19)

Офлайн

#9 Март 23, 2008 12:57:28

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Tuple/List при чтении с устройств

Ага. вот ты упомянул tcpdump.
как я понимаю теперь задача стои: выделить из трафика заколовки пакетов и попробовать распознавать их?



Офлайн

#10 Март 23, 2008 14:43:46

mario
От:
Зарегистрирован: 2007-08-04
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Tuple/List при чтении с устройств

Спасибо, с первым разобрался.

> как я понимаю теперь задача стои: выделить из трафика заколовки пакетов и попробовать распознавать их?

Есть такое да … Не подскажите с этим?



Отредактировано (Март 23, 2008 18:04:03)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version