页面“Tcpdump”与“Redis批量删除key”之间的差异

来自linux中国网wiki
(页面间的差异)
跳到导航 跳到搜索
docker>Evan
 
 
第1行: 第1行:
 +
[[category:ops]] [[category:redis]] 
  
==tcpdump==
+
[[Redis-bigkeys]]
 +
=redis cluster 批量删除key=
 
<pre>
 
<pre>
简介
+
#June 19 2020  有空结果一下原来的版本再优化一下
用简单的话来定义tcpdump,就是:dump  traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。
+
cat redis_del_key.sh
 +
#!/bin/bash
 +
# Usage
 +
#redis_list=("host:post" "host:post")
  
Usage:
+
redis_list=( "172.16.200.12:7003" "172.16.200.7:7004" "172.16.200.7:7005" "172.16.200.13:7000" "172.16.200.13:7001" "172.16.200.12:7002")
 +
#redis_list=( "172.16.200.13:7000" "172.16.200.13:7001" "172.16.200.12:7002")
 +
#redis_list=("172.16.200.7:7004")
 +
password="3636password"
  
-i interface
+
for info in ${redis_list[@]}
-i  any,这个参数是监控所有的网络端口
+
    do
 +
        echo "开始执行:$info" 
 +
        ip=`echo $info | cut -d : -f 1`
 +
        port=`echo $info | cut -d : -f 2`
  
host IP,监控指定IP的所有协议的数据包。
+
      for  loop in  `cat key.txt`
-w 保存文件名
+
        do
-s 包切片长度
+
        #echo $loop  |xargs -t -n1 redis-cli -c  -h $ip -p $port -a $password -c del
-c 抓的包的数量。
+
        echo $loop  |xargs -t -n1 redis-cli -c  -h $ip -p $port -a $password -c keys
</pre>
+
        done
 +
 
 +
    done
 +
    echo "success done完成"
 +
 
 +
# cat key.txt
 +
infnce:wonderfulCache
 +
ext_info
 +
 
 +
 
 +
 
 +
#原来的版本
 +
 
 +
del hello_user_*
 +
 
 +
redis-cli keys
 +
 
 +
 
 +
redis-cli keys "hello_user_*" | xargs redis-cli del
  
==tcpdump密码嗅探==
 
<pre>
 
在ftp server 监听 网卡eth0 上的 21 端口
 
  
tcpdump -i eth1 -nn -X 'port 21'
+
./redis-cli -h IP -p PORT -a PASSWORD keys 'key*' | xargs  ./redis-cli -h IP  -p PORT -a PASSWORD del
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
 
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
 
  
 +
redis-cli    -c  -h    172.31.22.218  -p 7000  -a pass keys 'hello_user_*'| xargs -i redis-cli    -c  -h    172.31.22.218  -p 7000  -a pass  del {}
 +
redis-cli    -c  -h    172.31.22.218  -p 7001  -a pass keys 'hello_user_*'| xargs -i redis-cli    -c  -h    172.31.22.218  -p 7001  -a pass  del {}
  
在client login
+
redis-cli    -c  -h    172.31.16.135  -p 7002  -a pass keys 'hello_user_*'| xargs -i  redis-cli    -c  -h    172.31.16.135  -p 7002 -a pass  del {}
 +
redis-cli    -c  -h    172.31.16.135  -p 7003  -a pass keys 'hello_user_*'| xargs  -i redis-cli    -c  -h    172.31.16.135  -p 7003 -a pass  del {}
  
然后回来就可以看到了
+
redis-cli    -c  -h    172.31.23.43  -p 7004  -a pass keys 'hello_user_*'| xargs -i  redis-cli    -c  -h    172.31.23.43  -p 7004 -a pass  del {}
 +
redis-cli    -c  -h    172.31.23.43  -p 7005  -a pass keys 'hello_user_*'| xargs -i  redis-cli    -c  -h    172.31.23.43  -p 7005 -a pass  del {}
  
10:54:16.357663 IP 192.168.10.225.41624 > 192.168.30.56.21: Flags [P.], seq 21:31, ack 97, win 229, options [nop,nop,TS val 90850575 ecr 2797412999], length 10
 
0x0000:  4500 003e f19b 4000 3f06 9fb4 c0a8 0ae1  E..>..@.?.......
 
0x0010:  c0a8 1e38 a298 0015 df4f e322 519f d76e  ...8.....O."Q..n
 
0x0020:  8018 00e5 ece9 0000 0101 080a 056a 450f  .............jE.
 
0x0030:  a6bd 2287 5553 4552 2066 7470 0d0a      ..".USER.ftp..
 
  
  
10:54:16.358016 IP 192.168.10.225.41624 > 192.168.30.56.21: Flags [P.], seq 31:48, ack 131, win 229, options [nop,nop,TS val 90850575 ecr 2797412999], length 17
+
#!/bin/bash
0x0000:  4500 0045 f19c 4000 3f06 9fac c0a8 0ae1  E..E..@.?.......
+
redis_comm=/usr/local/redis-5.0.3/bin/redis-cli
0x0010:  c0a8 1e38 a298 0015 df4f e32c 519f d790 ...8.....O.,Q...
+
redis_ser01=192.168.50.175
0x0020: 8018 00e5 dc39 0000 0101 080a 056a 450f .....9.......jE.
+
redis_ser02=192.168.50.174
0x0030: a6bd 2287 5041 5353 2065 7661 6e32 3233 ..".PASS.evan223
+
$redis_comm -c -h $redis_ser01 -p 7001 -a xxx keys $1 | xargs -i $redis_comm -c -h $redis_ser01 -p 7001 -a xxx del {}
0x0040: 3335 350d 0a                            355..
+
$redis_comm -c -h $redis_ser02 -p 7001 -a xxx keys $1 | xargs -i $redis_comm -c -h $redis_ser02 -p 7001 -a xxx del {}
  
可见 可见 ftp软件为 vsftp , ftp 用户 为 ftp 密码为 evan223355
+
运行:
</pre>
 
  
=例子=
+
./redis_del_key.sh 匹配的key*
<pre>
 
#自动生成分析文件  起因 连接 qq的相关业务老是timeout
 
tcpdump host  domain  -w tcp
 
  
 +
err 
  
抓取所有经过eth1,目的或源地址是192.168.1.1的网络数据
+
-i {} 都是一定要的
tcpdump -i eth1 host 192.168.1.1
 
  
指定源地址
+
redis-cli -n 0 keys "test*" | xargs redis-cli -n 0 del
tcpdump -i eth1 src host 192.168.1.1
+
(error) CROSSSLOT Keys in request don't hash to the same slot
  
指定目的地址
 
tcpdump -i eth1 dst host 192.168.1.1
 
 
</pre>
 
</pre>
  
=参考=
+
=see also=
 
 
[http://blog.linuxchina.net/?p=2454 大话tcpdump]
 
  
[http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html Linux tcpdump命令详解]
 
  
[http://linuxwiki.github.io/NetTools/tcpdump.html tcpdump使用技巧]
+
[https://blog.csdn.net/yangyangye/article/details/100523387  redis集群批量删除模糊key shell脚本]
  
[http://www.cnblogs.com/havenshen/p/3850167.html KeepAlive详解]
+
[https://www.cnblogs.com/feng0520/p/11067025.html redis cluster集群批量删除中的key]
  
[http://blog.linuxchina.net/?p=3529 tcpdump密码嗅探]
+
[https://my.oschina.net/u/1255588/blog/1563672 Redis集群批量删除key]
  
[http://blog.csdn.net/whuslei/article/details/6667471 TCP协议中的三次握手和四次挥手(图解)]
+
[https://blog.csdn.net/zj20142213/article/details/80879744  redis集群批量删除指定的key]
  
[[category:ops]]  [[category:linux]]
+
https://blog.csdn.net/qq_36090419/article/details/80537684

2020年6月22日 (一) 11:37的版本


Redis-bigkeys

redis cluster 批量删除key

#June 19 2020   有空结果一下原来的版本再优化一下 
cat redis_del_key.sh
#!/bin/bash
# Usage 
#redis_list=("host:post" "host:post")

redis_list=( "172.16.200.12:7003" "172.16.200.7:7004" "172.16.200.7:7005" "172.16.200.13:7000" "172.16.200.13:7001" "172.16.200.12:7002")
#redis_list=( "172.16.200.13:7000" "172.16.200.13:7001" "172.16.200.12:7002")
#redis_list=("172.16.200.7:7004")
password="3636password"

for info in ${redis_list[@]}
    do
        echo "开始执行:$info"  
        ip=`echo $info | cut -d : -f 1`
        port=`echo $info | cut -d : -f 2`

      for  loop in  `cat key.txt`
         do
         #echo $loop  |xargs -t -n1 redis-cli -c  -h $ip -p $port -a $password -c del
         echo $loop  |xargs -t -n1 redis-cli -c  -h $ip -p $port -a $password -c keys 
         done

    done
    echo "success done完成"

# cat key.txt 
infnce:wonderfulCache
ext_info



#原来的版本

del hello_user_* 

redis-cli keys


 redis-cli keys "hello_user_*" | xargs redis-cli del


./redis-cli -h IP -p PORT -a PASSWORD keys 'key*' | xargs  ./redis-cli -h IP  -p PORT -a PASSWORD del

redis-cli    -c  -h    172.31.22.218   -p 7000  -a pass keys 'hello_user_*'| xargs -i redis-cli    -c  -h    172.31.22.218   -p 7000  -a pass  del {}
redis-cli    -c  -h    172.31.22.218   -p 7001  -a pass keys 'hello_user_*'| xargs -i redis-cli    -c  -h    172.31.22.218   -p 7001  -a pass  del {}

redis-cli    -c  -h    172.31.16.135  -p 7002  -a pass keys 'hello_user_*'| xargs -i  redis-cli    -c  -h    172.31.16.135   -p 7002 -a pass  del {}
redis-cli    -c  -h    172.31.16.135  -p 7003  -a pass keys 'hello_user_*'| xargs  -i redis-cli    -c  -h    172.31.16.135   -p 7003 -a pass  del {}

redis-cli    -c  -h     172.31.23.43   -p 7004  -a pass keys 'hello_user_*'| xargs -i  redis-cli    -c  -h    172.31.23.43   -p 7004 -a pass  del {}
redis-cli    -c  -h     172.31.23.43   -p 7005  -a pass keys 'hello_user_*'| xargs -i  redis-cli    -c  -h    172.31.23.43   -p 7005 -a pass  del {}



#!/bin/bash
redis_comm=/usr/local/redis-5.0.3/bin/redis-cli
redis_ser01=192.168.50.175
redis_ser02=192.168.50.174
$redis_comm -c -h $redis_ser01  -p 7001 -a xxx  keys $1 | xargs -i $redis_comm -c -h $redis_ser01  -p 7001 -a xxx del {}
$redis_comm -c -h $redis_ser02  -p 7001 -a xxx  keys $1 | xargs -i $redis_comm -c -h $redis_ser02  -p 7001 -a xxx del {}

运行:

./redis_del_key.sh  匹配的key*

err  

-i  {} 都是一定要的 

redis-cli -n 0 keys "test*" | xargs redis-cli -n 0 del
(error) CROSSSLOT Keys in request don't hash to the same slot

see also

redis集群批量删除模糊key shell脚本

redis cluster集群批量删除中的key

Redis集群批量删除key

redis集群批量删除指定的key

https://blog.csdn.net/qq_36090419/article/details/80537684