• python redis 终端 redis-cli.py mini版本 redis 终端管理工具


    Python redis-cli.py Python3 redis-cli 命令行管理工具 redis终端工具

    由于最近测试redis未授权访问漏洞,发现本机没有安装redis,不能运行redis-cli,于是自己写了一个简单的redis-cli终端,功能并不完整,只是支持简单的登陆等操作。

    mini redis-cli tools

    经过我的测试,执行简单的命令还是可以的。

    代码已经上传到github https://github.com/b4zinga/PythonTools/blob/master/redis-cli.py

    测试截图:
    redis-cli.py -h

    redis-cli

    redis-cli

    源代码:

    # !/usr/bin/env python
    # coding  : utf-8
    # Date    : 2018-03-20 13:45:00
    # Author  : b4zinga
    # Email   : b4zinga@outlook.com
    # Function: mini redis-cli tools
    
    
    import socket
    import sys
    import re
    socket.setdefaulttimeout(3)
    
    
    def sendCommand(host, port):
        sock = socket.socket()
        try:
            sock.connect((host,port))
        except Exception as err:
            print(err)
            sys.exit(0)
    
        while True:
            cmd = input('>')
            if cmd == 'exit':
                break
    
            cmd = makeCmd(cmd)
    
            try:
                sock.send(cmd.encode())
                while True:
                    recv = sock.recv(1024)
                    print(handleRecv(recv))
                    if len(recv)<1024:  # 循环接收1024, 如果长度小于1024则默认后面已经无内容,break
                        break
            except Exception as err:
                print(err)
        
        sock.close()
    
    
    
    def makeCmd(cmd):
        command = "*"
        cmd = cmd.split()
        command = command + str(len(cmd)) + '
    '
        for c in cmd:
            command = command + '$' + str(len(c)) + '
    ' + c + '
    '
        return command
    
    def handleRecv(recvdate):
        recvdate = recvdate.decode()
        if recvdate.startswith('*'):
            recvdate=recvdate[2:].strip('
    ')
        recvdate = re.sub('$d+\r\n', '', recvdate)
        return recvdate
    
    
    
    if __name__ == '__main__':
        usage="""
    ====================================================
            mini redis-cli tools.
    Usage:
            redis-cli.py <IP> <port>
            Default ip      127.0.0.1
            Default port    6379
    Example:
            redis-cli.py 127.0.0.1 6379
            redis-cli.py 127.0.0.1 
    
            redis-cli.py 192.168.1.133 6378
    ====================================================
        """
        if '-h' in sys.argv or '--help' in sys.argv or len(sys.argv) > 3:
            print(usage)
            sys.exit(0)
    
        if len(sys.argv) == 1:
            sys.argv.append('127.0.0.1')
    
        if len(sys.argv) == 2:
            sys.argv.append(6379)
    
        sendCommand(sys.argv[1], int(sys.argv[2]))
    
    
  • 相关阅读:
    ecshop 商品分类下的销售排行
    ecshop批量清除商品的精品新品热销属性
    ECSHOP二次开发之给商品增加新字段
    ECSHOP首页调用文章内的缩略图
    ECSHOP给分类添加代表图
    ECSHOP首页促销商品下显示促销时间
    鼠标点击后更换背景
    ECSHOP如何修改商品评论或留言的日期
    ECSHOP设置指定IP才能登录后台
    ecshop远程图片本地化保存相册图片
  • 原文地址:https://www.cnblogs.com/0x4D75/p/8613524.html
Copyright © 2020-2023  润新知