当前位置: 首页 > news >正文

shell脚本tcpdump抓取数据解析执行关机指令

百度ai写了一个脚本


#!/bin/bash
# 组播监听关机脚本
# 功能:捕获特定组播数据包(53 48 55 54 44 4F 57 4E FF)时执行关机MCAST_GROUP="239.255.255.250"
MCAST_PORT=1900
SHUTDOWN_HEX="53 48 55 54 44 4F 57 4E FF"# 检查root权限
if [ "$(id -u)" -ne 0 ]; thenecho "请使用root权限运行此脚本" >&2exit 1
fi# 安装依赖
if ! command -v tcpdump &> /dev/null; thenecho "正在安装tcpdump..."apt-get install -y tcpdump || yum install -y tcpdump
fi# 主监听函数
start_monitoring() {echo "开始监听组播地址 ${MCAST_GROUP}:${MCAST_PORT}..."tcpdump -i any -X -nn "dst ${MCAST_GROUP} and udp port ${MCAST_PORT}" | \while read -r line; doif [[ $line =~ $SHUTDOWN_HEX ]]; thenecho "检测到关机指令!"shutdown -h nowexit 0fidone
}# 异常处理
trap 'echo "监听已停止"; exit 0' INT TERMstart_monitoring

结果发现抓不到数据,最终排查到tcpdump命令 "dst xxx"这里不需要,直接改用端口就行

tcpdump -i eth0  port ${MCAST_PORT} -X -nn

且测试时发现 用any任意端口有时正常,有时不正常,直接写网口名才行

且后面读取解析的数据也不行,百度了没有找到如何用tcpdump的输出数据做为read的读取输入

改用保存文件形式,且tcpdump命令不自动退出,只能手动退出

后面查到用-c 又发现问题 -c 1> output.txt也有问题,直接提示tcpdump的用法,这里要写成

-c 1 > output.txt才行,

最终脚本写成

#!/bin/bash
# 组播监听关机脚本
# 功能:捕获特定组播数据包(53 48 55 54 44 4F 57 4E FF)时执行关机MCAST_GROUP="232.10.40.0"
MCAST_PORT=28000
FILE="output.txt"# 检查root权限
#if [ "$(id -u)" -ne 0 ]; then
#    echo "请使用root权限运行此脚本" >&2
#    exit 1
#fi# 安装依赖
#if ! command -v tcpdump &> /dev/null; then
#    echo "正在安装tcpdump..."
#    apt-get install -y tcpdump || yum install -y tcpdump
#fi# 主监听函数
start_monitoring() {echo "开始监听组播地址 ${MCAST_GROUP}:${MCAST_PORT}..."tcpdump -i eth0  port ${MCAST_PORT} -XX -nn -c 1 > $FILEcat $FILE
sleep 5grep "REBOOT" $FILE if [ $? -eq 0 ]; thenecho "检测到重启指令!"rebootexit 0elseecho "检测到关机指令!"shutdown -h nowexit 0fi
}# 异常处理
#trap 'echo "监听已停止"; exit 0' INT TERMstart_monitoring

http://www.xdnf.cn/news/1240633.html

相关文章:

  • PyCharm代码规范与代码格式化插件安装与使用:pylint和autopep8
  • 质押和抵押有什么区别
  • 【Java】一篇详解HashMap的扩容机制!!
  • 2025年8月4日私鱼创作平台v1.0.4公测版更新发布-完成大部分功能包含关注创作者以及发布作品及合集功能优雅草科技
  • 音视频学习笔记
  • 深入解析 Apache Tomcat 配置文件
  • Planner 5D v2.29.0 安卓高级解锁版,手机3D家装,全套家具免费
  • 鸿蒙开发-端云一体化--云数据库
  • [spring-cloud: 负载均衡]-源码分析
  • Nginx服务做负载均衡网关
  • 【项目实践】在系统接入天气api,根据当前天气提醒,做好plan
  • 基于Java的AI工具和框架
  • 【异常案例分析】使用空指针调用函数(非虚函数)时,没有崩溃在函数调用处,而是崩在被调用函数内部
  • Android Telephony 框架与横向支撑层
  • Android JUnit 测试框架详解:从基础到高级实践
  • Flask + HTML 项目开发思路
  • 开源的现代数据探索和可视化平台:Apache Superset 快速指南 Quickstart
  • Android的UI View是如何最终绘制成一帧显示在手机屏幕上?
  • 阿里云-通义灵码:解锁云原生智能开发新能力,让云开发更“灵”~
  • 福彩双色球第2025089期篮球号码分析
  • 理解 JavaScript 中的“ / ”:路径、资源与目录、nginx配置、请求、转义的那些事
  • 超急评估:用提前计算分摊性能成本
  • go学习笔记:panic是什么含义
  • 工作流绑定卡片优化用户体验-练习我要找工作智能体
  • 豆包1.6+PromptPilot实战:构建智能品牌评价情感分类系统的技术探索
  • 基于Spring Cloud Gateway和Resilience4j的微服务容错与流量控制实战经验分享
  • Solidity智能合约开发全攻略
  • 电商系统想撑住大流量?ZKmall开源商城靠微服务 + Spring Boot3 解决单体架构难题
  • 设计模式-创建型-工厂模式
  • 134页PPT华为项目管理之道PPT