使用go-sniffer监控mysql、redis执行命令

栏目: 数据库 · 发布时间: 7年前

内容简介:最近在逛Capture mysql,redis,http,mongodb etc protocol... 抓包截取项目中的数据库请求并解析成相应的语句,如mysql协议会解析为sql语句,便于 调试。 不要修改代码,直接嗅探项目中的数据请求。参照官网 来安装。

最近在逛 GitHub 的时候发现一个有趣的 go 项目 go-sniffer ,是用来在开发环境监控 mysqlredis 执行命令的。

Capture mysql,redis,http,mongodb etc protocol... 抓包截取项目中的数据库请求并解析成相应的语句,如 mysql 协议会解析为 sql 语句,便于 调试。 不要修改代码,直接嗅探项目中的数据请求。

一、 安装 GO 环境

参照官网 来安装。

下面以 Ubuntu 为例来介绍一下。

1. 下载 Go 1.11.2压缩包

下载地址: dl.google.com/go/go1.11.2…

2. 解约文件

将文件解压到 /usr/local 文件夹下面, 如果不是 root 用户,需要在解压命令前面加上 sodu

tar -C /usr/local -xzf go1.11.2.linux-amd64.tar.gz
复制代码

3. 创建 GOPATH 目录

GOPATH 是存放 Go 源代码、包、生成的二进制文件的目录,位置一般放在 $HMOE/go 下,我们执行 mkdir ~/go 命令来创建这个目录。

接着在 ~/go 目录下面分别创建 src 目录和 bin 目录, bin 目录也可以不创建,它会在执行 go install 之后自动创建。

现在我们的目录结构如下:

go
├── bin
└── src
复制代码

4. 添加环境变量

我们需要把 /usr/local/go/bin~/go/bin 这两个目录加入环境变量中,来方便我们执行命令。

编辑 ~/.profile 文件,在文件的最后一行加上:

PATH="$HOME/go/bin:/usr/local/go/bin:$PATH"
复制代码

保存退出。执行 source ~/.profile 来更新环境变量。

执行 go version ,可以看到终端输出: go version go1.11.2 linux/amd64 ,代表 go 安装成功。

二、 使用 go-sniffer

1. 安装 libpcap-dev

Ubuntu 环境下需要先安装 libpcap-dev , 执行如下命令来安装:

sudo apt-get install libpcap-dev
复制代码

2. 安装 go-sniffer

使用 go get 来下载

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

复制代码

由于需要从 GitHub 来下载,所以速度会有点慢,需要耐心等待一会

下载过程:

github.com/40t/go-sniffer (download)
github.com/google/gopacket (download)
github.com/google/gopacket
github.com/40t/go-sniffer/plugSrc/http/build
github.com/40t/go-sniffer/plugSrc/mongodb/build/internal/json
github.com/40t/go-sniffer/plugSrc/mongodb/build/bson
github.com/40t/go-sniffer/plugSrc/mongodb/build
github.com/40t/go-sniffer/plugSrc/mysql/build
github.com/40t/go-sniffer/plugSrc/redis/build
github.com/google/gopacket/layers
github.com/google/gopacket/pcap
github.com/google/gopacket/tcpassembly
github.com/google/gopacket/tcpassembly/tcpreader
github.com/40t/go-sniffer/core
github.com/40t/go-sniffer


复制代码

如果刚才已经把 ~/go/bin 加入环境变量,这个时候可以直接执行 go-sniffer 来验证一下。

当然我们也可以把 go-sniffer 拷贝到 /usr/local/bin ,执行如下命令:

sudo cp -rf $(go env GOPATH)/bin/go-sniffer /usr/local/bin
复制代码

3. 用法

执行 go-sniffer 可以看到输出了我们的设备名称,监听的时候需要这个设备名称

vagrant@homestead:~$ go-sniffer
==================================================================================
[Usage]

    go-sniffer [device] [plug] [plug's params(optional)]

    [exp]
          go-sniffer en0 redis          Capture redis packet
          go-sniffer en0 mysql -p 3306  Capture mysql packet

    go-sniffer --[commend]
               --help "this page"
               --env  "environment variable"
               --list "Plug-in list"
               --ver  "version"
               --dev  "device"
    [exp]
          go-sniffer --list "show all plug-in"

==================================================================================
[device] : lo :   127.0.0.1
[device] : enp0s3 : 08:00:27:19:2c:a4  10.0.2.15
[device] : enp0s8 : 08:00:27:1b:32:1c  192.168.10.10
==================================================================================


复制代码

在这里我需要监听本机的 mysql 请求,就是 127.0.0.1 ,也就是 lo 这个设备

那就使用如下命令来启动:

sudo go-sniffer lo mysql
复制代码

启动之后,就可以监控 MySQL 的请求了

我们随便来执行一个 PHP 脚本,就可以看到输出了我们脚本执行的 SQL

……
2018-11-29 04:11:04| ser -> cli |【Ok】 Effect Row:0
2018-11-29 04:11:04| cli -> ser |【Pretreatment】select * from `users` where `appid` = ? limit 1
2018-11-29 04:11:04| cli -> ser |Stm id[3]: 'select * from `users` where `appid` = ? limit 1';
set @p0 = '4s6rL2VIsTp6hIaGFvf9iZzk9uIkvLlIVk';
Execute stm id[3]:  using @p0;
Drop stm id[3];
……

复制代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Programming Amazon Web Services

Programming Amazon Web Services

James Murty / O'Reilly Media / 2008-3-25 / USD 49.99

Building on the success of its storefront and fulfillment services, Amazon now allows businesses to "rent" computing power, data storage and bandwidth on its vast network platform. This book demonstra......一起来看看 《Programming Amazon Web Services》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具