跳转到主内容
极星编程网:以代码为星,赴技术山海!

Luocs玩Python之:批量杀掉Redis客户端连接

用途: 批量删除当前连接 redis 的所有客户端,除了从库的ip和本机ip。 准备一个hosts.txt配置,里面按如下格式填写Redis集群信息# cat hosts.txt[test]h1 = 1.1.1.1h2 = 1.1.1.2h3 = 1.1.1.3[group1]h1 = 2.1.1.1h2 = 2.1.1.2h3 = 2.1.1.3# cat killclient.py 用途: 批量删除当前连接redis的所有客户端,除了从库的ip和本机ip。 Python 3.14.3 微软官方的 Python 扩展,是 VS Code 安装量最高的扩展(209M+)。集成 IntelliSense(通过 Pylance)、调试(通过 Python Debugger)、代码检查、格式化、重构和单元测试等功能。支持 Jupyter Notebook、虚拟环境管理和多 Python 版本切换。 下载
准备一个hosts.txt配置,里面按如下格式填写Redis集群信息 # cat hosts.txt [test] h1 = 1.1.1.1 h2 = 1.1.1.2 h3 = 1.1.1.3 [group1] h1 = 2.1.1.1 h2 = 2.1.1.2 h3 = 2.1.1.3 # cat killclient.py #!/usr/bin/env python # -*- coding: UTF-8 -*- ###################################################### # @Author: Luocs(XU) # @Create Date: 2014-12-18 ###################################################### import os, sys, time, ConfigParser def killclient(clicmd, host, port, s1, s2, myip): os.popen("cat /dev/null > /tmp/client.tmp") os.popen("%s -h %s -p %s client list >> /tmp/client.tmp" % (clicmd, host, port)) f = open("/tmp/client.tmp") while 1: line = f.readline().strip() if not line: break myclient = os.popen("echo %s | grep -v -E '%s|%s|%s' | awk '{print $2}' | awk -F'=' '{print $2}'" % (line, s1, s2, myip)).read().strip() if myclient: print("Client %s killed!" % myclient) os.popen("%s -h %s -p %s client kill %s" % (clicmd, host, port, myclient)) def getMyip(): myip = os.popen("/sbin/ifconfig | grep 'inet addr' | awk '{print $2}'").read() myip = myip[myip.find(':')+1:myip.find('\n')] return myip def gethost(name): fp = ConfigParser.ConfigParser() fp.readfp(open('hosts.txt')) h1 = fp.get(name,"h1") # 主库的IP h2 = fp.get(name,"h2") # 从库IP h3 = fp.get(name,"h3") # 从库IP,有多少个可以继续写下去 return h1, h2, h3 def main(): name = sys.argv[1] port = sys.argv[2] #port = 7001 # 也可以写死 clicmd = "/home/luocs/redis-cli" # redis-cli h1, h2, h3 = gethost(name) host = h1 # 主库ip传给host s1 = h2 s2 = h3 myip = getMyip() killclient(clicmd, host, port, s1, s2, myip) if __name__ == '__main__': main() 执行结果: # python killclient.py test 7001 Client 127.0.0.1:58263 killed! Client 127.0.0.1:58264 killed! Client 127.0.0.1:58265 killed! Client 127.0.0.1:58266 killed! Client 127.0.0.1:58267 killed! Client 127.0.0.1:58268 killed! Client 127.0.0.1:58269 killed!
本文出自:http://www.luocs.com, 原文地址:http://www.luocs.com/archives/883.html, 感谢原作者分享。

相关文章