批量获取FreeSWITCH所有分机号及其密码

前言

有次项目上需要获取所有FreeSWITCH注册分机的分机号和密码,就用python写了个小脚本来获取。

可以先把freeswitch/conf/directory/default/目录下的所有xml文件拷到一个临时空文件夹,避免操作失误影响生产业务。

将编辑好的python脚本放到同一目录下执行即可。

执行完成后会生成一个名为password1.txt文件,其中包含了分机号与密码。

当时写的比较粗糙,只是能用,有待改善。

python脚本

# 此脚本用于解析当前文件夹分机号的xml文件,并提取出用户名和密码
# 需要python3
# 需要pip安装lxml
# version: 1.1

import os
from lxml import etree
# import sys

def getFilelist():
    filenames = os.listdir()
    return filenames

def parseXML(filename):
    '''解析xml文件,并返回字符串'''
    with open(filename,'r',encoding="utf-8") as f:
        content = f.read()
        xmlc = etree.XML(content)
        user = xmlc.xpath('//user/@id')[0]
        passwd = xmlc.xpath('//params/param/@value')[0]
        user_pwd = user + "," + passwd
        return user_pwd

def savetest(alist):
    '''保存'''
    with open("password1.txt","a",encoding="utf-8") as f_obj:
        f_obj.write(alist)
        f_obj.write('\n')
        f_obj.close()


if __name__ == "__main__":
    filenames = getFilelist()
    for filename in filenames:
        # usernum = int(filename.split(".")[0])
        try:
            if filename.split(".")[1] != "xml":
                print(filename)
            else:
                user_pwd = parseXML(filename)
                userNum = int(user_pwd.split(",")[0])
                savetest(user_pwd)
                # if userNum >= 1400 and userNum <= 2000:
        except:
            pass
posted @ 2021-03-14 01:16  花酒锄作田  阅读(463)  评论(0编辑  收藏  举报