python 简易ss端口管理器

来源:互联网 发布:2017网络教育多少钱 编辑:程序博客网 时间:2024/06/09 02:52

本文章为小川先生原创,转载可以,请标明出处。

最近开始学python了,然后不小心开了个ss服务器,然后有同学找我要账号,我说,那好吧,回去给你整一个。但实际上,加个账号得改ss的json格式的配置文件,然后改完还得重启ss服务,配置文件要是不小心少个逗号,或者是引号,ss还不能正常跑,好吧,既然学了python,就拿他写个小工具吧。

惯例,直接上代码。

python2的代码,用py3的请把raw_input()改为input()

#!/usr/bin/pythonimport re#正则表达式模块,用于后面重启ssimport osimport jsonimport randomdef rJsonFile(fName):    with open(fName) as f:        src = json.loads(f.read())    return srcdef wJsonFile(fName, data):    #data is a dict    with open(fName, 'w') as f:        f.write(json.dumps(data, sort_keys = True, indent = 4))def ssUpdate():    global srcJson    global srcHash    wJsonFile(ssJson, srcJson)    wJsonFile(ssHash, srcHash)    ssReboot()def ssAdd():    global srcJson    global srcHash    usrName = raw_input('name:')    s = srcJson['port_password']    while True:        flag = 1        newPort = str(random.randint(30000, 39999))        for ke in s.keys():            if newPort == ke:                flag = 0                break        if flag==1:            break    pwd = str(random.randint(10000, 99999))    s[newPort] = pwd    srcHash[newPort] = usrName    ssUpdate()    print 'Success add' + newPort + ':' + pwddef ssDel():    global srcJson    global srcHash    flag = 1    s = srcJson['port_password']    while flag:        flag = 0        delPort = raw_input('port:')        try:            del s[delPort]        except KeyError:            flag = 1            print 'Error port!'    del srcHash[delPort]    ssUpdate()def ssReboot():    f = os.popen('netstat -tulnp | grep 32981')    s = re.search(r'\d{1,5}/python', f.read()).group(0)    s = s[0:s.find(r'/')]    os.system('kill '+s)def listPorts():    global srcJson    global srcHash    s = srcJson['port_password']    sg = srcHash    print 'port\tpwd\tuser'    for key in sorted(s.keys()):        print key+'\t'+s[key]+'\t'+sg[key]def ssInit():    global srcJson    global srcHash    srcJson = rJsonFile(ssJson)    srcHash = rJsonFile(ssHash)srcJson = ''srcHash = ''ssJson = '/etc/shadow.json'#ss的配置文件ssHash = '/etc/ssHashTable.xc'#自定义的端口用户对应表ssCmd = {'add':ssAdd, 'del':ssDel, 'ls':listPorts, 'reboot':ssReboot, 'exit':exit}ssInit()while True:    usrCmd = raw_input('>>')    ssCmd[usrCmd]()

用法:把代码保存到.py的文件里,然后把chmod 744,然后把

shadow.json,ssHashTable.xc示例文件放到/etc/目录下。

然后执行代码,目前支持的命令有,add(添加),del(删除),ls(列出目前端口情况),reboot(重启ss),exit(退出程序)。

shadow.json 示例文件{    "server":"0.0.0.0",    "port_password":{      "32981":"123456",      "35642":"654321"    },    "local_port":1080,    "timeout":600,    "method":"aes-256-cfb"}ssHashTable.xc 示例文件{    "32981": "YujiaLee",     "35642": "Zhang"}

本文章为小川先生原创,转载可以,请标明出处。

0 0
原创粉丝点击