2013-08-29 2 views
0

Я пытаюсь найти MAC-адрес в radius.log на удаленном сервере с небольшим скриптом в python. Я хочу найти один конкретный mac и распечатать полную строку, содержащую этот адрес mac. Я могу только подтвердить, что mac найден методом search().ищет строку и печатает полную строку, содержащую эту строку

часть моего кода:

prog=re.compile(self.MAC_ADDR) 
sess.exec_command('tail -f /usr/local/var/log/radius/radius.log') 
rl, wl, xl = select.select([sess],[],[],0.0) 
if len(rl) > 0: #stdout 
    block= sess.recv(1024) 
    macfound=prog.search(block) 
    if macfound: 
     print "##############################################################################" 
     print self.MAC_ADDR,"found in tail" 
     time.sleep (1) 
+0

Извините, но в чем проблема? Вы говорите, что можете подтвердить, что вы действительно находите MAC-адрес, поэтому ваша программа, похоже, работает. – Evert

+0

Да, никаких проблем с программой, однако то, что я на самом деле желаю, это распечатать полную строку, содержащую mac. в каждом блоке есть куча строк, а текущая программа только подтверждает наличие макроса в блоке. Я хочу, чтобы линия была напечатана. –

+0

Вы должны показать свое регулярное выражение ('self.MAC_ADDR'). Если вы используете группы, вы можете захватить соответствующую строку в группе регулярных выражений и распечатать эту группу. – Evert

ответ

1

только с помощью строки может быть быстрее:

for line in all_blocks.splitlines(): 
    if MAC in line: 
     print(line) 

Это дает вам все строки, адрес УДС в, используя регулярные expresssions:

prog = re.compile('^.*' + re.escape(MAC) + '.*$', re.MULTILINE) 
lines = prog.findall(all_blocks) 
+0

Первое решение не найдет того же 'MAC' с другим случаем. С 'regex' легче справиться с этой проблемой. Во втором подходе, почему вы избегаете этого? MAC не имеет метасимвола. – Birei

+0

Извините, что мне нужно изменить, чтобы он работал? – User

+0

Ничего. Я думаю, что он работает так, как есть. Это OP, который должен сказать, соответствует ли он его потребностям. – Birei

Смежные вопросы