python生成xml文件(xml.dom.minidom)

有个脚本一直调用一个xml文件,想让他更加灵活。就有了今天的这个需求。

程序使用配置文件生成任务,但是配置文件手动编写太过繁琐,配合调用脚本完成自动化

# -*-coding:utf-8 -*-
# BY WANGCC

import xml.dom.minidom as minidom

class Nsf_currency:
    task_type='domain'
    os_match = 'yes'
    messtypes='5;6;7;8;9;10;11;12;13;14;15;16;17;18;20;21;22;23;24;25;26;27;28'
    isguesspwd='no'
    port_strategy='user'
    port_speed='3'
    port_tcp='T'
    port_udp='yes'
    live='yes'
    live_icmp='yes'
    live_udp='no'
    live_tcp='yes'
    live_tcp_ports='21,22,23,25,80,443,445,139,3389,6000'
    scan_level='3'
    timeout_plugins='40'
    timeout_read='5'
    enable_unsafe_plugins='no'
    scan_alert='yes'
    alert_msg=''
    scan_huawei='no'
    check_addtional='no'
    scan_oracle='yes'
    ifdebug='no'
    encoding='UTF-8'

class Nsf_conf(Nsf_currency):
    def __init__(self,targets, port_strategy_userports):
        self.targets=targets
        self.port_strategy_userports=port_strategy_userports

dom = minidom.getDOMImplementation().createDocument(None, 'config', None)
root = dom.documentElement
employee = dom.createElement('server')
root.appendChild(employee)

targets = dom.createElement('targets')
targets.appendChild(dom.createTextNode('\n\t'))
root.appendChild(targets)
report = dom.createElement('report')
report.appendChild(dom.createTextNode('\n\t'))
root.appendChild(report)
pwdguess = dom.createElement('pwdguess')
pwdguess.appendChild(dom.createTextNode('\n\t'))
root.appendChild(pwdguess)
#----------------
taskname = dom.createElement('taskname')
taskname.appendChild(dom.createCDATASection(''))
root.appendChild(taskname)
#--------------------plugin_template_id
plugin_template_id = dom.createElement('plugin_template_id')
plugin_template_id.appendChild(dom.createTextNode('0'))
root.appendChild(plugin_template_id)
#---------------------
scanpri = dom.createElement('scanpri')
scanpri.appendChild(dom.createTextNode('2'))
root.appendChild(scanpri)

def dom_createE(name,value):
    element = dom.createElement('key')
    element.setAttribute('name', name)
    element.setAttribute('value', value)
    employee.appendChild(element)
    return

def writeInfoToXml(object):
    #内容参数
    dom_createE(name='task_type',value=Nsf_currency.task_type)
    dom_createE(name='targets',value=object.targets)
    dom_createE(name='os_match',value=object.os_match)
    dom_createE(name='messtypes',value=object.messtypes)
    dom_createE(name='isguesspwd', value=object.isguesspwd)
    dom_createE(name='port_strategy', value=object.port_strategy)
    dom_createE(name='port_strategy_userports', value=object.port_strategy_userports)
    dom_createE(name='port_speed', value=object.port_speed)
    dom_createE(name='port_tcp', value=object.port_tcp)
    dom_createE(name='port_udp', value=object.port_udp)
    dom_createE(name='live', value=object.live)
    dom_createE(name='live_icmp', value=object.live_icmp)
    dom_createE(name='live_udp', value=object.live_udp)
    dom_createE(name='live_tcp', value=object.live_tcp)
    dom_createE(name='live_tcp_ports', value=object.live_tcp_ports)
    dom_createE(name='scan_level', value=object.scan_level)
    dom_createE(name='timeout_plugins', value=object.timeout_plugins)
    dom_createE(name='timeout_read', value=object.timeout_read)
    dom_createE(name='enable_unsafe_plugins', value=object.enable_unsafe_plugins)
    dom_createE(name='scan_alert', value=object.scan_alert)
    dom_createE(name='scan_huawei', value=object.scan_huawei)
    dom_createE(name='check_addtional', value=object.check_addtional)
    dom_createE(name='scan_oracle', value=object.scan_oracle)
    dom_createE(name='ifdebug', value=object.ifdebug)
    dom_createE(name='encoding', value=object.encoding)

    with open('test.xml', 'w', encoding='utf-8') as f:
        dom.writexml(f, addindent='\t', newl='\n', encoding='utf-8')


if __name__ == '__main__':
    object=Nsf_conf('10.10.10.10,20.20.20.20','1-100,443,445')
    writeInfoToXml(object)
    print(object.targets)

如上图所示,有点乱,还有很多可以优化的地方,先整出来,再优化吧
以下是今天借鉴的文章地址。
python 通过xml获取测试节点和属性
python中minidom对xml的常用处理
官方文档

查看最多的文档

使用minidom来处理XML的示例(Python 学习)(转载)

poc漏洞测试工具

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,036评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,046评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,411评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,622评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,661评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,521评论 1 304
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,288评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,200评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,644评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,837评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,953评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,673评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,281评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,889评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,011评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,119评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,901评论 2 355