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

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

由于最近測(cè)試redis未授權(quán)訪問漏洞,發(fā)現(xiàn)本機(jī)沒有安裝redis,不能運(yùn)行redis-cli,于是自己寫了一個(gè)簡單的redis-cli終端,功能并不完整,只是支持簡單的登陸等操作。

mini redis-cli tools

經(jīng)過我的測(cè)試,執(zhí)行簡單的命令還是可以的。

代碼已經(jīng)上傳到github https://github.com/b4zinga/PythonTools/blob/master/redis-cli.py

測(cè)試截圖:


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:  # 循環(huán)接收1024, 如果長度小于1024則默認(rèn)后面已經(jīng)無內(nèi)容,break
                    break
        except Exception as err:
            print(err)
    
    sock.close()



def makeCmd(cmd):
    command = "*"
    cmd = cmd.split()
    command = command + str(len(cmd)) + '\r\n'
    for c in cmd:
        command = command + '$' + str(len(c)) + '\r\n' + c + '\r\n'
    return command

def handleRecv(recvdate):
    recvdate = recvdate.decode()
    if recvdate.startswith('*'):
        recvdate=recvdate[2:].strip('\r\n')
    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 \n
        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]))

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容