go-sniffer使用

介绍

抓取项目中如:mysql,redis,mongodb,http等,数据库请求或者网络请求,命令行展示。工作中一直用于抓取项目中的数据库sql语句\redis语句等,便于调试。个人推荐用它来抓mysql的请求,可以清晰地看到各种sql语句。

支持协议:

mysql

redis

mongodb

http

github地址

https://github.com/40t/go-sniffer

安装过程中遇到的问题

1、下载go-sniffer时提示command not found

go get -v -u github.com/40t/go-sniffer

百度查到的结果是可能是因为服务器没有安装golang,golang安装命令如下

yum install golang -y

2、安装完golang之后再执行上述命令,提示内容变了

请教了公司的运维小哥哥,他怀疑是该服务器所在网络请求不了github,并不是我的原因。然后他通过另一个网络下载了go-sniffer的安装包并且安装好了。安装目录是/usr/local/bin/go-sniffer

3、然后我开始执行帮助命令,然而还是没出现我期待的界面,又提示找不到命令

go-sniffer --help

又请教运维小哥哥,他截图了他执行的结果给我,是正常的,但是我留意到他执行的命令与我的有所不同,这是他执行的命令

/usr/local/bin/go-sniffer --help

同一个服务器,我用的还是root权限的用户,怎么我执行就不行呢?急于看到效果,我改成了与他完全相同的命令,在go-sniffer前加上目录,通通都可以正常执行了。

/usr/local/bin/go-sniffer --help

/usr/local/bin/go-sniffer --dev

/usr/local/bin/go-sniffer --list

但是我不甘心,我百度了很久,说是环境变量问题,我就重新配置了环境变量,还是没解决。终于找到了一个靠谱的说法,说可能是切换用户的时候,没有切换工作目录,造成了这个问题。

我每次使用的是

sudo su

而不是

sudo su -

区别是,前者只切用户,不切工作目录,后者同时会切工作目录。

所以我退出之后重新切换到了root用户,再执行上述命令,终于看到了期待的界面。

事实证明,我的linux基础实在是太薄弱了,以至于遇到很多问题,不知道从何下手,好好地拾起linux吧!

4、一切工作准备就绪我开始尝试抓mysql的数据包

然后执行完命令之后,刷新页面或者通过界面创建业务数据,服务端都没任何动静

go-sniffer lo mysql

继续百度,留意到go-sniffer抓的网关的数据包,通过go-sniffer --dev查询到了两个设备地址,一个不行,那就换一个呗,于是我输入了以下命令,再进行界面上的创建操作

go-sniffer eth0 mysql

然后奇迹出现了,打印出了一堆清晰的sql语句,无比激动!

5、然后我又尝试抓redis的数据包

go-sniffer eth0 redis

但是令人失望的是,无论怎么请求必然会产生redis请求的页面,服务端这边都不打印任何东西。我有留意到go-sniffer --help里面对它的用法的解释,还有一个插件端口的参数,所以我怀疑是不是端口抓的不对的问题,于是根据文档,找到了目前我们服务器上redis配置的端口,输入了如下命令。

go-sniffer eth0 redis -p 98763

之后看到界面疯狂地输出了redis的操作请求。

反思为什么抓取mysql的请求是不指定端口都能成功抓取呢,因为go-sniffer默认是抓mysql的3306端口的,而我们的配置也是使用的3306,所以自然而然就能抓到啦。

我来评几句
登录后评论

已发表评论数()

相关站点

热门文章