python 简易ss端口管理器

本文介绍了一个使用Python编写的简单SS服务器管理工具,该工具能够自动化处理账户添加、删除及重启等操作,避免了手动修改配置文件所带来的不便。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

惯例,直接上代码。

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

#!/usr/bin/python
import re
#正则表达式模块,用于后面重启ss
import os
import json
import random
def rJsonFile(fName):
    with open(fName) as f:
        src = json.loads(f.read())
    return src
def 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 + ':' + pwd
def 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"
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值