小编典典

滥用cURL与Redis通信

linux

我想向PINGRedis 发送一个消息,以检查连接是否正常工作,现在我可以安装了redis- cli,但我现在不想安装curl了。那么我该如何滥用curl呢?基本上,我需要关闭此处发送的内容:

> GET / HTTP/1.1
> User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Host: localhost:6379
> Accept: */*
> 
-ERR wrong number of arguments for 'get' command
-ERR unknown command 'User-Agent:'
-ERR unknown command 'Host:'
-ERR unknown command 'Accept:'

User-Agent通过添加-A "",我可以完全摆脱它,但是我找不到其他的东西。知道我该怎么做吗?


阅读 582

收藏
2020-06-07

共1个答案

小编典典

当您想使用curl时,您需要基于RESP的REST,例如webdis,tinywebdis或turbowebdis。参见https://github.com/markuman/tinywebdis#turbowebdis-
tinywebdis–cherrywebdis

$ curl -w '\n' http://127.0.0.1:8888/ping
{"ping":"PONG"}

如果没有用于Redis的REST接口,则可以使用netcat为例。

$ (printf "PING\r\n";) | nc localhost 6379 
+PONG

使用netcat,您必须自己构建RESP协议。参见http://redis.io/topics/protocol

更新2018-01-09

我构建了一个功能强大的bash函数,该函数可以通过TCP任意代价对Redis实例执行ping操作

    function redis-ping() {
            # ping a redis server at any cost
            redis-cli -h $1 ping 2>/dev/null || \
                    echo $((printf "PING\r\n";) | nc $1 6379 2>/dev/null || \
                    exec 3<>/dev/tcp/$1/6379 && echo -e "PING\r\n" >&3 && head -c 7 <&3)
    }

用法 redis-ping localhost

2020-06-07