LINUX.ORG.RU

Python xml parsing (named)

 , , ,


2

2

Пытаюсь марсить статистику бинда. Бинд через сокет отдает статистику в xml, примерно такую:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/bind9.xsl"?>
<statistics version="3.6">
	<server>
		<boot-time>2016-09-20T11:04:14Z</boot-time>
		<config-time>2016-09-28T05:11:43Z</config-time>
		<current-time>2016-09-28T06:18:29Z</current-time>
		<counters type="opcode">
			<counter name="QUERY">324477875</counter>
			<counter name="NOTIFY">90</counter>
			<counter name="UPDATE">18337</counter>
		</counters>
		<counters type="qtype">
			<counter name="RESERVED0">17</counter>
			<counter name="A">261391066</counter>
			<counter name="NS">618794</counter>
			<counter name="CNAME">10502</counter>
			<counter name="ANY">5388518</counter>
			<counter name="DLV">63918</counter>
		</counters>

Скрипт следующий:

import xml.etree.ElementTree as ET
tree = ET.parse('/etc/bind/stats/ststistic.xml')
root = tree.getroot()                           

for child in root[0]:
  print child.tag, child.attrib, child.text
выдает

boot-time {} 2016-09-20T11:04:14Z
config-time {} 2016-09-28T05:11:43Z
current-time {} 2016-09-28T06:18:29Z
counters {'type': 'opcode'} None
counters {'type': 'qtype'} None

нужная мне статистика в opcode, пробую так:

for child in root[0][0]:
  print child.tag, child.attrib, child.text
получаю пустоту. Почему так? как получить значения вложеных элементов?


In [15]: for child in tree.findall('.//counters[@type="opcode"]/counter'):
   ....:     print child.tag, child.attrib, child.text
   ....:     
counter {'name': 'QUERY'} 324477875
counter {'name': 'NOTIFY'} 90
counter {'name': 'UPDATE'} 18337
pawnhearts ★★★★★
()

Deez, ты можешь выложить исправленный код темы «Expect «подключиться» к запущеному spawn из другого proc»

volbet
()
Ответ на: комментарий от volbet

offtop

В той теме есть решение (подсказка)

proc Login {pflag} { 
global spawn_id 
...
   } 

proc someone {flag} { 
global spawn_id 
spawn $telnet $ipaddress
  if {[Login $flag]} { 
   expect -re $prompt     { send "sh sw\r";}     
  }
..
}

DeeZ
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.