滥用cURL与Redis通信
我想向PING
Redis 发送一个消息,以检查连接是否正常工作,现在我可以安装了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 ""
,我可以完全摆脱它,但是我找不到其他的东西。知道我该怎么做吗?
回答:
当您想使用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
以上是 滥用cURL与Redis通信 的全部内容, 来源链接: utcz.com/qa/413210.html