一、M4 安装与更新

默认情况下,初始账号(密码)为:admin(admin)。默认访问端口为 5800。

1.1 Windows 手动安装 M4 并注册为服务

1.1.1 准备

下载第三方​​软件​: MongoDB 安装包JDK 安装包nssm 安装包

下载最新 M4 主程序压缩包(当前最新为 trick-m4-4.9.2.zip): M4 发布页

下载 M4 演示项目包: M4Demo 项目包

1080

1.1.2 安装 JDK

双击运行 jdk-17.0.10_windows-x64_bin.exe ;

1080
1080
1080
1080
1080

安装完成;

1.1.3 安装 MongoDB

双击运行 mongodb-windows-x86_64-6.0.12-signed.msi ;

1080
1080
1080
1080
1080

取消勾选“Install MongoDB Compass”,然后点击“Next”;

1080
1080
1080
1080

完成安装;

1.1.4 部署 M4 主程序和项目包

将 trick-m4-4.9.2.zip 和 M4Demo.zip 分别解压到 D盘 根目录 下

1080

文件树:

1080
1080
1080

在 D盘 根目录下新建一个 startM4.txt 输入:

cd trick-m4-4.9.2
::trick-m4-4.9.2 根据主程序实际的文件夹名进行修改
java -jar trick-m4-4.9.2.jar "D:\M4Demo"
::trick-m4-4.9.2.jar 根据主程序的实际版本进行修改
::"D:\M4Demo" 根据项目包文件夹的实际位置和名字进行修改

将 startM4.txt 重命名为 startM4.bat 并右键发送快捷方式到桌面,双击桌面的快捷方式即可手动启动:

1080
1080
1080

手动启动成功!(非服务启动,注意保留弹出的黑框,关闭即关闭m4)

1.1.5 将 M4 制作为服务

为了防止冲突,先把上一步:双击 startM4.bat/startM4.bat-快捷方式 手动运行m4的黑框关掉;

1080

将 M4 制作为服务需要用到 nssm ,以下是 nssm 的常用命令:

  • 安装服务: nssm.exe install <服务名>

  • 删除服务: nssm.exe remove <服务名>

  • 启动服务: nssm.exe start <服务名>

  • 停止服务: nssm.exe stop <服务名>

  • 重启服务: nssm.exe restart <服务名>

  • 服务状态查看: nssm.exe status <服务名>

将 nssm.zip 解压至 m4主程序文件夹同级(此处为 D盘 根目录):

1080
1080

搜索 cmd,右键"命令提示符"点击以管理员身份运行 :

1080
1080

进入 nssm.exe 所在目录,此处为:D:\\nssm,在 管理员:命令提示符 中输入 D:​ 回车,切换盘符;

1080

进入 D:\nssm,输入 cd D:\nssm​ ,回车;

1080

将 M4 安装成系统服务,输入 nssm.exe install m4​ ,回车,弹出窗口“NSSM service installer”;

1080

点击 Path 右侧的“…​”,选择上面创建的 D:\startM4.bat,点击 “Install service”:

1080

注册成功,点击“确定”,在 管理员:命令提示符 窗口 输入 net start m4​ 启动服务,提示“m4 服务已经启动成功。”后即可关掉黑框:

1080
1080

1.1.6 更新主程序

下载最新 M4 主程序压缩包(假设更新为 trick-m4-4.9.3.zip):[M4 发布页](https://m4.seer-group.com/release/)

先关闭正在运行中的程序:

  • 非服务启动的,关闭m4对应的命令行提示符

1080
  • 注册以服务启动的,搜索"服务",打开,找到m4,点击 停止 此服务

1080
1080

将下载的 新版主程序压缩包:trick-m4-4.9.3.zip 解压到 D盘根目录:

1080

右键 startM4.bat ,点击“编辑”,对应修改主程序文件夹名、主程序 jar 文件名,保存后关闭记事本:

1080
1080

启动更新后的 M4 (手动/服务启动 二选一):

  • 手动启动:双击桌面快捷方式,保留黑框不关闭 image::img/Install/image-20240223104759-y0p1etx.png[1080]

  • 服务启动:搜索"服务",打开,找到m4,点击 启动 此服务

1080
1080

1.1.7 更新项目包

参照 “更新主程序” ,关闭m4;

安全起见,将原项目包 M4Demo 重命名进行备份,比如:M4DemoOld-240223

1080

将需要更新的项目包,解压到对应位置:

如果项目包名字不变(仍为 M4Demo):

1080

参照 “更新主程序” ,选择需要的方式启动 M4 即可。 如果项目包名字产生了变化(M4DemoNew):

1080
  • 右键 startM4.bat ,点击“编辑”,对应修改项目包名,保存后关闭记事本:

1080
  • 参照 1.1.6 ,选择需要的方式启动 M4 即可。

1.2 Ubuntu18.04 下手动安装 M4 并注册为服务

​​仙工提供的服务器:

版本:ubuntu-18.04.6-desktop-amd64

账号(密码):sr(sr)、root(seer)

1.2.1 准备以及部署 M4 主程序、项目包

下载第三方软件: Ubuntu18.04 JDK、MongoDB一键安装包

下载最新 M4 主程序压缩包(当前最新为 trick-m4-4.9.2.zip): M4 发布页

下载 M4 演示项目包: M4Demo 项目包

将这三个压缩包丢到主文件夹(/home/sr):

1080

终端输入 su​ 回车,输入root密码(seer)提权,然后进入该文件夹:输入 cd /home/sr​ 回车;

解压 trick-m4-4.9.2.zip 到 /opt/trick-m4-4.9.2 ,终端输入:unzip trick-m4-4.9.2.zip -d /opt/trick-m4-4.9.2​ 回车;

解压 ubuntu一键安装mongodb6.0.11&jdk.zip 到 /opt ,终端输入:unzip ubuntu一键安装mongodb6.0.11&jdk.zip -d /opt​ 回车;

解压 M4Demo.zip 到 /opt/m4/M4Demo,终端输入: unzip M4Demo.zip -d /opt/M4Demo​ 回车;

可以看到:

1080
1080

1.2.2 一键安装 JDK & MongoDB

终端输入 su​ 回车,输入root密码(seer)提权,然后进入/opt目录,终端输入 cd /opt​ 回车;

终端输入 chmod +x mwms.sh​ 回车,使 mwms.sh 可执行;

终端输入 source mwms.sh​ 回车,执行 source mwms.sh;

1080

输入 1​ 回车,提示安装完成;此时 java等一众jdk执行文件 所在位置 /opt/jdk-17.0.8/bin

1080

检查mongodb是否运行,终端输入 systemctl status mongodb​ 回车,正常:

1080

制作mongdump、mongorestore的软连接,解决数据库导出、导入的问题:

终端输入 ln -s /opt/mongo/bin/mongodump /usr/bin/mongodump​​ 回车; 终端输入 ln -s /opt/mongo/bin/mongorestore /usr/bin/mongorestore​​ 回车;

1.2.3 手动启动 M4

打开终端,终端输入 su​ 回车,输入root密码,回车;

进入工作目录,终端输入 cd /opt/trick-m4-4.9.2​ 回车;

启动 M4,终端输入 /opt/jdk-17.0.8/bin/java -jar trick-m4-4.9.2.jar "/opt/M4Demo"​ 回车;

1080

保留终端(关闭当前终端则关闭程序),Ubuntu 本机浏览器访问网页(http://127.0.0.1:5800)进行测试。

1.2.4 注册M4为服务、开机自启动

Ubuntu 注册服务,通常使用 systemctl 命令,常用命令:

  • 重载服务 systemctl daemon-reload 每次新增和修改 service文件 都需要重载、重启

  • 启动服务 systemctl start \<服务名\>

  • 停止服务 systemctl stop \<服务名\>

  • 重启服务 systemctl restart \<服务名\>

  • 检查服务状态 systemctl status \<服务名\>

制作 m4.service文件,打开终端输入 sudo vim /etc/systemd/system/m4.service​ 回车,右键粘贴下方文本(按 a 可进入编辑模式修改):

[Unit]
Description=m4
After=network.target
After=mongodb.service
#Before=index.service

[Service]
Type=simple

StandardOutput=null
# 禁止输出日志到 journal 和 syslog
StandardError=null
# 禁止输出错误到 journal 和 syslog
# 其实 journal 无所谓,会滚动更新,但是 syslog 尾大不掉,如果日志很多存在塞满 /var 再起不能的风险

WorkingDirectory=/opt/trick-m4-4.9.2
#/opt/trick-m4-4.9.2 根据主程序根目录的实际位置

ExecStart=/opt/jdk-17.0.8/bin/java -jar trick-m4-4.9.2​.jar "/opt/M4Demo"
#​trick-m4-4.9.2​.jar 根据主程序实际版本、实际位置修改
#"/opt/M4Demo"根据项目包实际名称、实际位置修改

Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

编辑完成,按 Esc 键 退出编辑模式,输入 :wq​ 回车 保存并退出;

重载 service 文件,终端输入 sudo systemctl daemon-reload​ 回车;

启动 M4,终端输入 sudo systemctl start m4​ 回车;

查看 M4 运行状态 sudo systemctl status m4​ 回车,可见运行正常:

1080

设置 M4 开机自启,终端输入 sudo systemctl enable m4​ 回车;

保留此时可关闭当前终端,Ubuntu 本机浏览器访问网页(http://127.0.0.1:5800)进行测试。

注意:此时若想关闭 M4,需要在终端输入 sudo systemctl stop m4​ 回车;

1.2.5 更新主程序

先关闭正在运行中的程序:

  • 非服务的,关闭运行 M4 的终端:

1080
  • 已注册为服务的,打开终端,在终端输入 sudo systemctl stop m4​ 回车;

参照 2.1.1 将新的主程序压缩包(比如trick-m4-4.9.3.zip)下载到主目录(/home/sr);

解压到 /opt/trick-m4-4.9.3/,打开终端输入 unzip /home/sr/trick-m4-4.9.3.zip -d /opt/trick-m4-4.9.3​ 回车;

然后启动 M4:

  • 非服务的,手动启动,参考 2.1.3 :

打开终端,终端输入 su​ 回车,输入root密码,回车;

进入工作目录,终端输入 cd /opt/trick-m4-4.9.3​ 回车;

启动 M4,终端输入 /opt/jdk-17.0.8/bin/java -jar trick-m4-4.9.3.jar "/opt/M4Demo"​ 回车; * 之前注册为服务,需要以服务形式启动的,参考 2.1.4:

修改 m4.service文件,打开终端输入 sudo vim /etc/systemd/system/m4.service​ 回车,按 a 进入编辑模式修改为:

[Unit]
Description=m4
After=network.target
After=mongodb.service
#Before=index.service

[Service]
Type=simple

StandardOutput=null
# 禁止输出日志到 journal 和 syslog
StandardError=null
# 禁止输出错误到 journal 和 syslog
# 其实 journal 无所谓,会滚动更新,但是 syslog 尾大不掉,如果日志很多存在塞满 /var 再起不能的风险

WorkingDirectory=/opt/trick-m4-4.9.3
#更新主程序前:WorkingDirectory=/opt/trick-m4-4.9.2

ExecStart=/opt/jdk-17.0.8/bin/java -jar trick-m4-4.9.3.jar "/opt/M4Demo"
#更新主程序前:ExecStart=/opt/jdk-17.0.8/bin/java -jar trick-m4-4.9.2.jar "/opt/M4Demo"

Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

编辑完成,按 Esc 键 退出编辑模式,输入 :wq​ 回车 保存并退出;

重载 service 文件,终端输入 sudo systemctl daemon-reload​ 回车;

启动 M4,终端输入 sudo systemctl start m4​ 回车;

查看 M4 运行状态 sudo systemctl status m4​ 回车,可见运行正常:

设置 M4 开机自启,终端输入 sudo systemctl enable m4​ 回车;

保留此时可关闭当前终端,Ubuntu 本机浏览器访问网页(http://127.0.0.1:5800)进行测试。

1.2.6 更新项目包

参照 2.1.5 先关闭正在运行中的程序;

如果新项目包与原项目包重名,最好给原项目包重命名备份一下(比如:M4Demo 重命名为 M4DemoOld-240222):

打开终端,输入 sudo mv /opt/M4Demo /opt/M4DemoOld-240222​ 回车;

参照 2.1.1 将新的主程序压缩包(比如M4Demo2.zip)下载到主目录(/home/sr)

解压到 /opt/M4Demo2/,打开终端输入 unzip /home/sr/M4Demo2.zip -d /opt/M4Demo2​ 回车;

然后启动 M4:

  • 非服务的,手动启动,参考 2.1.3 :

打开终端,终端输入 su​ 回车,输入root密码,回车;

进入工作目录,终端输入 cd /opt/trick-m4-4.9.3​ 回车;

启动 M4,终端输入 /opt/jdk-17.0.8/bin/java -jar trick-m4-4.9.3.jar "/opt/M4Demo2"​ 回车; * 之前注册为服务,需要以服务形式启动的,参考 2.1.4:

修改 m4.service文件,打开终端输入 sudo vim /etc/systemd/system/m4.service​ 回车,按 a 进入编辑模式修改为:

[Unit]
Description=m4
After=network.target
After=mongodb.service
#Before=index.service

[Service]
Type=simple

StandardOutput=null
# 禁止输出日志到 journal 和 syslog
StandardError=null
# 禁止输出错误到 journal 和 syslog
# 其实 journal 无所谓,会滚动更新,但是 syslog 尾大不掉,如果日志很多存在塞满 /var 再起不能的风险

WorkingDirectory=/opt/trick-m4-4.9.3

ExecStart=/opt/jdk-17.0.8/bin/java -jar trick-m4-4.9.3.jar "/opt/M4Demo2"
#更新项目包前:ExecStart=/opt/jdk-17.0.8/bin/java -jar trick-m4-4.9.3.jar "/opt/M4Demo"

Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

编辑完成,按 Esc 键 退出编辑模式,输入 :wq​ 回车 保存并退出;

重载 service 文件,终端输入 sudo systemctl daemon-reload​ 回车;

启动 M4,终端输入 sudo systemctl start m4​ 回车;

查看 M4 运行状态 sudo systemctl status m4​ 回车,可见运行正常:

设置 M4 开机自启,终端输入 sudo systemctl enable m4​ 回车;

保留此时可关闭当前终端,Ubuntu 本机浏览器访问网页(http://127.0.0.1:5800)进行测试。

二、ModbusTCP 操作文档

2.1 参数讲解

针对性的讲一下每个参数,先有个映像,后边还会举例说明:

事物标识符: 就是一个递增的数字,每次发送消息递增一下即可,尽量不重复,因为占用2个字节,所以范围是:0~65535

协议标识符: 这个默认给固定值0,表示modbus协议

长度: 等于协议标识符的长度2+协议数据单元PDU的长度(不固定)

单元标识符: 这个就是从机地址,就是slave id

功能码: Modbus规定了多个功能,那么为了方便的使用这些功能,我们给每个功能都设定一个功能码,就是上边说的,你要对从机做什么操作,那么就在这里设定好,从机读取到这个数据就知道要做什么

1080

数据: 数据对于主机来说就是想要操作从机寄存器里的哪些数据,什么是寄存器?就是从机用来存数据的地方,讲从机的时候具体再将。 讲完了基本概念,咱们来实操一下,在这之前,咱们需要用到两个工具: ModbusPoll 和 ModbusSlave 安装包

2.2 ModbusPoll 工具简单使用讲解

1080
1080
1080

2.3 M4 中 ModbusTCP 协议的 PLC 设备配置

菜单选项把PLC设备配置出来,保存。刷新浏览器界面

1080

PLC设备配置菜单,新增、填上对应的PLC名称,类型选ModbusTCP(如果PLC是走的ModbusTCP协议的话),填上plc设备实际的ip和端口号,保存。

1080

2.3.1 猎鹰任务 ModbusTCP 读取

设备名填上文新增的PLC名称(例:PLC_1)

1080

功能码根据需要读取的该地址寄存器类型而填

1080

对应填上地址和slave ID

1080

2.3.2 猎鹰任务 ModbusTCP 写

功能码多为

1080

值是M4写入PLC目标地址位的值。

1080

2.3.3 猎鹰任务 ModbusTCP 读取直到等于

其他位置Modbus读取一致,不同于Modbus读取只会读一次返回读取值,Modbus读取直到等于有一个目标值,在读取地址值不为目标值时会一直重复读,直到读到匹配值或系统超时,读取间隔单位毫秒

1080

2.4 测试方法

一般会有协议文档,PLC设备参与的任务,根据业务逻辑,可用M4自行编写写入值的任务或使用Modbus poll模拟M4给plc的IP对应的地址写入值,观察任务中其他设备的反应情况是否与协议一致(若是前期测试,可先行测试通断和写入值情况)

使用Modbus poll 链接上后发现如下情况,先确定现场PLC使用的地址是哪一段

1080

如果协议操作的地址位范围为40000~40009点击“setup”

1080
1080

​图中代表从地址40000开始,检测10个长度,即40000-40009

三、WireShark 抓包操作文档

3.1 简介

WireShark是非常流行的网络封包分析工具,可以截取各种网络数据包,并显示数据包详细信息。常用于开发测试过程中各种问题定位。

3.2 安装与运行

3.2.1 Windows

官网下载页: Wireshark Download ,选择 Stable Release 中的 Windows x64 Installer 下载、双击安装即可。

双击桌面快捷方式即可运行。

3.2.2 Ubuntu Desktop

依赖极多,建议联网安装。可视化工具,只建议在桌面版系统安装。

打开终端,输入:sudo apt update,回车; 输入:sudo apt-get install wireshark,回车; 根据提示,输入:y,回车允许安装;

不要直接点开应用图标,权限不足,需要打开终端,输入:sudo wireshark,回车,即可运行。

3.3 抓包

分为:可视化界面、命令行两种抓包方式。

数据不多、临时抓包时可以使用可视化界面的方式抓包,操作更简单,可以边抓边看;数据量大或因为偶发性故障需要持久化抓包时,强烈建议使用命令行形式抓包,避免因内存占用造成抓包软件的崩溃导致抓包失败(必要时可以制作成服务开机自启)。

3.3.1 Ubuntu 查看网卡信息

打开终端,输入:ip a,回车,可以看到所有的网卡和 ip 地址:

1080

3.3.2 Windows 查看网卡信息

打开命令提示符(CMD),输入:ipconfig,回车,可以看到所有的网卡和 ip 地址:

1080

3.3.3 可视化界面抓包(Ubuntu 与 Windows 同理)

运行程序,可以看到本机的可抓取对象(这里主要关注网卡),右侧的波浪线表示网卡的活跃状态,空白则表示该网卡上没有数据流量:

1080

根据需要选择网卡进行抓包,比如,服务器与上位机通过 WLAN 这个网卡通讯,就选中这个网卡。(关键字为 loopback 的网卡指网络回环,适用于同一台服务器不同端口之间的通讯抓包),这里假设是同一台服务器不同端口之间的通讯抓包,双击选中关键字为 loopback 的网卡,开始抓包:

1080

通过应用显示过滤器过滤出需要的信息,常用的有:

1、过滤出 5800 端口的 tcp 数据:tcp.port == 5800

2、过滤出 5800 端口的 udp 数据:udp.port == 5800

3、过滤出 ip 为 127.0.0.1 的数据:ip.addr == 127.0.0.1

4、过滤出 5800 端口的 tcp 的且 ip 地址为 127.0.0.1 的数据:tcp.port == 5800 and ip.addr == 127.0.0.1

1080

保存抓包记录到文件(后续可使用 wireshark 打开这个文件做分析)

1080
1080

3.3.4 命令行抓包(Windows)

找到 wireshark 执行文件所在的根目录,通常在 C:\Program Files\Wireshark,可以通过右键快捷方式,点击“打开文件所在位置”找到,记住目录位置(如果是其他位置,下面凡是涉及到的路径的命令都要替换);

搜索 cmd,右键管理员打开“命令提示符”,输入:CHCP 65001,回车;再输入:"C:\Program Files\Wireshark\dumpcap.exe" -D,查看网卡 ID

img 20240613092955
img 20240613093142
img 20240613093350

可以看到,此时演示环境共有 12 个网卡(圆括号内是注释,填写网卡 ID 时不要填写圆括号及圆括号内的字符):

1. \Device\NPF_{445621F4-DCF2-41D1-9152-7CED35363119} (本地连接* 10)
2. \Device\NPF_{214BAE74-B505-43F4-A8D5-81B4D7484AB7} (本地连接* 9)
3. \Device\NPF_{278333B6-E03A-4785-AF91-BB01FD36166C} (本地连接* 8)
4. \Device\NPF_{A992BCF6-CD07-4E2A-BC81-0A9E137B4BB7} (WLAN)
5. \Device\NPF_{AC2557D3-9F60-4855-ACCA-8102F21FC2E8} (本地连接* 2)
6. \Device\NPF_{A6F6FF5D-B3B2-4B6F-8CA1-0D2A9F9EF484} (本地连接* 1)
7. \Device\NPF_{19870A8F-63C3-4FB1-903B-BCF151946EC0} (以太网 2)
8. \Device\NPF_Loopback (Adapter for loopback traffic capture)
9. \Device\NPF_{098EFB12-55E6-4E4F-A957-ACC005C4555F} (以太网 3)
10. \Device\NPF_{875D0E2A-D8AB-4055-B8D6-BA6DB38A7C48} (CorpLink TAP-Windows6)
11. \Device\NPF_{D66EBB0C-F4A7-4C00-A23F-6786199BDE6E} (CorpLink Wintun)
12. \Device\NPF_{CF17EBC7-C941-4118-A6A7-6F0A2705E120} (以太网)

记录下你需要抓包的 <网卡 ID>,如果需要抓 WLAN 这个网卡的数据,那么 <网卡 ID> 就是 \Device\NPF_{A992BCF6-CD07-4E2A-BC81-0A9E137B4BB7};如果是要抓网络回环(前文 可视化界面抓包 有提到),那么 <网卡 ID> 就是 \Device\NPF_Loopback

假设此时需要抓网络回环中 127.0.0.1 的 6000 端口的 TCP 数据,可以在命令行继续输入:"C:\Program Files\Wireshark\dumpcap.exe" -i \Device\NPF_Loopback -w D:\wireshark\ddd.pcap -b filesize:50000 -b files:1000 -f "host 127.0.0.1 and tcp port 6000" 开始抓包和自动转存。

参数解析
-i <网卡 ID>            #要抓的网卡
-w <文件路径>            #实时写入的文件的存储路径、前缀、格式(所在目录需要提前创建好)
-b filesize:50000            #保存的每个文件大小为 50000KB(50MB)
-b files:1000            #循环保存 1000 个文件,防止磁盘空间被撑爆
-f "host 127.0.0.1 and tcp port 6000"
#过滤器: host 为 127.0.0.1、端口为 6000 的 tcp 数据

如果希望持久化自动抓包(避免问题终于复现却忘记抓包的欲哭无泪),可以考虑创建一个 autocap.bat 将命令 "C:\Program Files\Wireshark\dumpcap.exe" -i \Device\NPF_Loopback -w D:\wireshark\ddd.pcap -b filesize:50000 -b files:1000 -f "host 127.0.0.1 and tcp port 6000" 粘贴进去,再使用 nssm 工具将 autocap.bat 做成服务。

3.3.5 命令行抓包(Ubuntu Desktop)

与 Windows 不同,apt 联网安装 Wireshark 时,dumpcap 工具已经注册在环境变量,所以无需关心所在位置。

终端输入:sudo dumpcap -D ,回车,即可查看 <网卡 ID>;

img 20240613114638

可以看到,此时演示环境共有 7 个网卡(圆括号内是注释,填写网卡 ID 时不要填写圆括号及圆括号内的字符):

1. enp0s3
2. any
3. lo (Loopback)
4. nflog
5. nfqueue
6. usbmon1
7. usbmon2

结合 3.3.1 Ubuntu 查看网卡信息 确定要抓的 <网卡 ID>,如果要抓 192.168.9.83 这个 ip 出去或者进来的网卡, <网卡 ID> 就是 enp0s3;如果是要抓网络回环(前文 可视化界面抓包 有提到),那么 <网卡 ID> 就是 lo

假设此时需要抓网络回环中 127.0.0.1 的 6000 端口的 TCP 数据,终端输入:sudo mkdir /opt/wireshark,回车,先创建存储抓包文件的文件夹;终端输入:sudo dumpcap -i lo -w /opt/wireshark/ddd.pcap -b filesize:50000 -b files:1000 -f "host 127.0.0.1 and tcp port 6000" 开始抓包和自动转存。

参数解析
-i <网卡 ID>            #要抓的网卡
-w <文件路径>            #实时写入的文件的存储路径、前缀、格式(所在目录需要提前创建好)
-b filesize:50000            #保存的每个文件大小为 50000KB(50MB)
-b files:1000            #循环保存 1000 个文件,防止磁盘空间被撑爆
-f "host 127.0.0.1 and tcp port 6000"
#过滤器: host 为 127.0.0.1、端口为 6000 的 tcp 数据

如果希望持久化自动抓包(避免问题终于复现却忘记抓包的欲哭无泪),可以考虑做成服务。制作执行脚本,终端输入:sudo vim /opt/wireshark/autocap.sh,回车,输入下方文本并保存:

#!/bin/sh
dumpcap -i lo -w /opt/wireshark/ddd.pcap -b filesize:50000 -b files:1000 -f "host 127.0.0.1 and tcp port 6000"

赋予这个脚本执行权限,终端输入:sudo chmod +x /opt/wireshark/autocap.sh,回车;

制作服务文件,终端输入:sudo vim /etc/systemd/system/autocap.service,回车,输入下方文本并保存:

[Unit]
Description=autocap
After=network.target

[Service]
StandardOutput=null
# 禁止输出日志到 journal 和 syslog
StandardError=null
# 禁止输出错误到 journal 和 syslog

Type=simple
WorkingDirectory=/opt/wireshark
ExecStart=/opt/wireshark/autocap.sh
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

终端依次输入、回车:sudo systemctl daemon-reloadsudo systemctl restart autocapsudo systemctl enable autocap;重载服务文件、重启服务、设置开机自启。

需要修改抓包命令时,sudo vim /opt/wireshark/autocap.sh,回车,修改参数并保存,`systemctl restart autocap`重启服务即可。

不再需要自动抓包时,sudo systemctl stop autocapsudo systemctl disable autocap,停止服务、禁用开机自启。