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
- python 简易ss端口管理器
- 简易文件管理器
- android简易文件管理器
- Android简易任务管理器
- 简易文件管理器实现
- 简易管理器(驱动方式)
- 简易文件管理器
- 简易消息管理器EventCenter
- SS服务器最简易搭建,FQ首选
- ListView制作简易文件管理器
- 简易文件管理器(未完成)
- 一个简易的文件管理器
- WPF实现简易任务管理器
- ss命令 批量查看端口占用情况
- ss
- ss
- ss
- ss
- linux uid备忘
- MessageDigest之MD5加密
- 求大神帮忙啊!!!!!!!!!!!!!!!!!!!
- 用纯css做环形进度条
- 数据库索引
- python 简易ss端口管理器
- 去掉数据库中date类型的日期数据导出到Excel后多余的 0:00:00
- 关于多媒体流
- 在Eclipse中导出.war包
- js正则表达式语法
- 使用中文域名的优缺点分析
- JavaScript练习三之简易表格排序
- cocostudio1.6UI编辑器中动画使用 cocos2dx3.3 播放问题记录
- 蓝牙配置 uart pskey