我使用elasticsearch很多,我需要一种方法来查看对elasticsearch服务器的请求。试图清理我的ElasticSearch跟踪器输出
所以我发现这个bash脚本:
sudo tcpdump -A -nn -s 0 'tcp dst port 9200 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' -i lo
效果很好,问题是它输出了大量的垃圾:
11:40:49.690863 IP 127.0.0.1.50270 > 127.0.0.1.9200: Flags [P.], seq 2594084191:2594084256, ack 2674569216, win 342, options [nop,nop,TS val 910075 ecr 910075], length 65
[email protected]@............^#...._.j.....V.i.....
..HEAD/HTTP/1.1
Host: localhost:9200
Connection: keep-alive
11:40:49.707181 IP 127.0.0.1.50271 > 127.0.0.1.9200: Flags [P.], seq 3009491178:3009491248, ack 3451175088, win 342, options [nop,nop,TS val 910080 ecr 910079], length 70
[email protected]@.jc........._#..a0........V.n.....
..GET /_nodes HTTP/1.1
Host: localhost:9200
Connection: keep-alive
11:40:52.215800 IP 127.0.0.1.50272 > 127.0.0.1.9200: Flags [P.], seq 148869443:148869508, ack 2833610757, win 342, options [nop,nop,TS val 910707 ecr 910707], length 65
[email protected]@..M.........`#....C..x....V.i.....
.sHEAD/HTTP/1.1
Host: localhost:9200
Connection: keep-alive
我只是想保持JSON。
所以我虽然要去消除。
我加入这个表达式:
sudo tcpdump -A -nn -s 0 'tcp dst port 9200 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' -i lo | grep -v "[0-9]{2}[:][0-9]{2}[:][0-9]{2}\.[0-9]*[ ][I][P][ ][0-9]{1,3}\.[0 -9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]*[ ][\>].*"
这里是行动的正则表达式:https://regex101.com/r/aS6kS2/1
不管怎么说,我想在这里完成是去除:
11:40:49.707181 IP 127.0.0.1.50271 > 127.0.0.1.9200: Flags [P.], seq 3009491178:3009491248, ack 3451175088, win 342, options [nop,nop,TS val 910080 ecr 910079], length 70
[email protected]@.jc........._#..a0........V.n.....
..GET /_nodes HTTP/1.1
Host: localhost:9200
Connection: keep-alive
使只保留body/JSON。
我试图一行一行,但现在它甚至不删除第一个是我的正则表达式的目标。
嗯,我希望我没有这样做,我已经回滚了所有的编辑,但是我仍然在'grep -v'字符串的中间看到'[0-9]'。对不起,如果我把它搞瞎了。另外,您可能希望从示例输入中显示所需的输出(JSON)。祝你好运。 – shellter
不要以为我们知道'body/JSON'是什么。我没有看到你得到的和你想要删除的东西之间的区别,除了空行。只需发布简洁,可测试的示例输入和预期输出,并对您希望实现的转换进行解释,更广泛的受众群体将能够为您提供帮助。 –
通过删除我显示的行,唯一会留下的将是JSON。我正在尝试构建一个黑名单过滤器。 – jnbdz