我有一些从服务器命令中获取 input.xml 文件的代码,我得到了 output.xml
Bu 我需要检查两台服务器并在最后有一个循环,我检查了它,但我只得到了输出中的最后一个结果。 xml 文件。我需要将 json.dumps(data) 合并到一个字典或 xmltodict 生成的任何内容中,然后解析为一个 xml。
我尝试了一些字典更新,但没有奏效。
代码在这里:
def get_output_dict():
if vendor == 'HP':
data = xml_to_dict(xml_doc='hp_input.xml')
elif vendor == 'Dell':
data = xml_to_dict(xml_doc='dell_input.xml')
for test in data['platform']['vendor']['tests']:
command = test.get('command') #continue if command is not present
output = remote(command)
str1 = ''.join(str(e) for e in output)
for key in test.keys():
if key == 'command':
test[key] = str1
#Change command key name with result using .pop
test['Result'] = test.pop('command')
return json.loads(json.dumps(data))
def get_output_xml(output_dict):
#dicttoxml.set_debug()
output_xml = dicttoxml.dicttoxml(output_dict,custom_root='output',attr_type=False,root=False)
if vendor == 'HP':
filename = 'hp_output-{}.xml'.format(host)
elif vendor == 'Dell':
filename = 'dell_output-{}.xml'.format(host)
tree = etree.fromstring(output_xml)
output_xml_string = etree.tostring(tree, pretty_print=True)
with open(filename, 'wb') as f:
f.write(output_xml_string)
print('Output for hostname server: {} written to:
{}'.format(host,filename))
return output_xml
for x in range(3, len(sys.argv)):
print("Checking Server: %s" % (sys.argv[x]))
remote = myssh(sys.argv[x], username, password)
data = get_output_dict()
xml = get_output_xml(data)
结果应该是我在 get_output_xml(data) 获得了从两台服务器的两次迭代合并的数据,也许稍后会在 3 台服务器上合并。