2014-10-16 2 views
1

У меня есть OSSEC файл правил XML, с содержанием, как это:как использовать Python для разбора OSSEC правила XML

<var name="SENSITIVE_DIRECTORY">^/root|^/proc|^/etc|^/$</var> 
<var name="BAD_WORDS_OPS">failure|error|bad |fatal|failed|illegal |denied|refused|unauthorized</var> 

<group name="local,ops,syslog,sudo,pam,"> 

    <rule id="101000" level="4"> 
    <if_sid>5715</if_sid> 
    <srcip>!10.83.60.54</srcip> 
    <srcip>!10.83.60.55</srcip> 
    <description>Except IPs approved.</description> 
    </rule> 
</group> 

Я пытаюсь использовать Python разобрать этот XML, но я получаю эту ошибку:

xml.etree.ElementTree.ParseError: junk after document element: line 10, column 0 

Вот код, я использую:

from xml.etree import ElementTree 

    def read_xml(text): 
     root = ElementTree.fromstring(text) 
     lst_node = root.getiterator("person") 
     print lst_node 

    if __name__ == '__main__': 
     read_xml(open("test.xml").read()) 
+0

Вы пробовали обернуть свой xml с помощью тега ''? ваш существующий образец не является допустимым – Anzel

+1

BTW, слово ** "parse" ** не "prase". –

+0

этот файл является правилом ossec, поэтому у меня много файлов, поэтому нельзя добавлять тег для всех, поэтому python может разбираться, как этот xml-файл? – robert

ответ

2

обернуть XML с тегом как этот

import xml.etree.ElementTree as ET 

def read_xml(text): 
    root = ET.fromstring('<root>'+text+'</root>') # just wrap it with a root tag 
    for el in root.iter('srcip'): # I changed the tag to srcip since your sample hasn't got "player" 
     print el.text 

if __name__ == '__main__': 
    read_xml(open("yourfile.xml", "r").read()) 

!10.83.60.54 
!10.83.60.55 
+0

Этот файл является ossec-правилом, поэтому у меня много файлов, поэтому не могу добавить тег для всех, так что python может анализировать, как этот xml-файл? – robert

+0

@robert, если вы не можете добавить тег на уровне файла, вы можете сделать это на уровне анализа, я обновил ответ соответственно – Anzel

+0

, что хорошо! Спасибо! – robert

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