SSH数据流量监控

简介

检查网络连接的数据传输情况有以下一些实际意义:
安全监控:检查数据传输情况可以帮助你识别异常活动或潜在的安全威胁。如果发现大量不寻常的数据传输活动,可能表示有未经授权的访问或恶意行为。通过监控数据传输,可以及时发现并采取适当的安全措施来保护网络和系统。
流量控制和资源管理:了解数据传输情况可以帮助你做出更明智的决策,以管理网络资源。通过实时监控网络连接的数据传输,可以有效地分配带宽和资源,确保关键任务和应用程序获得足够的网络资源,而不会受到其他不必要的数据传输的影响。

脚本内容

使用内置工具和脚本来实现监控

#!/bin/bashmax_data_per_connection=2.5  # 每个连接的最大数据量,单位为GB
max_connections=20  # 允许的最大连接数
log_file="/var/log/connection_monitor.log"  # 日志文件路径
max_log_size=10  # 日志文件的最大大小,单位为MB
backup_dir="/var/log/backup_logs"  # 备份日志的目录# 创建备份目录
mkdir -p "$backup_dir"while true; do# 获取当前SSH连接数和总数据量read connection_count total_data <<< $(ss -n | grep -E "ESTAB.*:22" | awk -v max_data=$max_data_per_connection '{count++; total += max_data} END {print count, total}')echo "$(date +"%Y-%m-%d %H:%M:%S") - Current SSH Connections: $connection_count, Estimated Total Data: $total_data GB" >> "$log_file"# 判断是否超过允许的总数据量if (( $(echo "$total_data > $max_connections" | bc -l) )); thenecho "$(date +"%Y-%m-%d %H:%M:%S") - Total data exceeded the allowed limit. Possible anomaly detected." >> "$log_file"# 在此处添加触发警报的逻辑,例如发送电子邮件或使用其他通知机制fi# 检查日志文件大小current_size=$(du -m "$log_file" | cut -f1)if ((current_size >= max_log_size)); then# 备份并截断日志文件backup_file="$backup_dir/$(date +"%Y%m%d%H%M%S")_connection_monitor.log"cp "$log_file" "$backup_file"> "$log_file"echo "$(date +"%Y-%m-%d %H:%M:%S") - Log rotated. Backup: $backup_file" >> "$log_file"fisleep 60  # 间隔时间,可以根据需要调整
done

脚本的主要部分

基本监控部分

max_data_per_connection: 每个连接的最大数据量,单位为GB。
max_connections: 允许的最大连接数。
log_file: 日志文件的路径。

日志轮转部分

max_log_size: 日志文件的最大大小,单位为MB。
backup_dir: 备份日志的目录。

创建备份目录

mkdir -p "$backup_dir"

如果备份目录不存在,则创建它。
主循环部分:

while true; do

无限循环,不断执行以下操作。
获取当前SSH连接数和总数据量

read connection_count total_data <<< $(ss -n | grep -E "ESTAB.*:22" | awk -v max_data=$max_data_per_connection '{count++; total += max_data} END {print count, total}')

使用ss命令获取当前SSH连接信息,然后使用grep和awk提取连接数和估算的总数据量。
记录监控信息到日志文件

echo "$(date +"%Y-%m-%d %H:%M:%S") - Current SSH Connections: $connection_count, Estimated Total Data: $total_data GB" >> "$log_file"

记录当前SSH连接数和估算的总数据量到日志文件。
判断是否超过允许的总数据量

if (( $(echo "$total_data > $max_connections" | bc -l) )); thenecho "$(date +"%Y-%m-%d %H:%M:%S") - Total data exceeded the allowed limit. Possible anomaly detected." >> "$log_file"# 在此处添加触发警报的逻辑,例如发送电子邮件或使用其他通知机制
fi

判断估算的总数据量是否超过设定的阈值,如果超过则记录异常信息,你可以在这个部分添加触发警报的逻辑。
检查日志文件大小并进行轮转

current_size=$(du -m "$log_file" | cut -f1)
if ((current_size >= max_log_size)); thenbackup_file="$backup_dir/$(date +"%Y%m%d%H%M%S")_connection_monitor.log"cp "$log_file" "$backup_file"> "$log_file"echo "$(date +"%Y-%m-%d %H:%M:%S") - Log rotated. Backup: $backup_file" >> "$log_file"
fi

检查当前日志文件的大小,如果超过设定的阈值(max_log_size),则创建一个带有时间戳的备份文件,并将日志文件内容备份到该文件,然后截断原始日志文件。记录日志轮转的事件,包括备份文件的路径和时间戳。
休眠

sleep 60  # 间隔时间,可以根据需要调整

休眠一段时间,控制循环的执行间隔。
这个脚本结合了监控SSH连接和日志轮转两个功能。可以根据需要进行调整,例如修改监控条件、调整轮转的日志大小、备份目录等。在实际使用之前,建议在测试环境中进行充分测试以确保其在你的特定环境中的可用性和准确性。

使用iftop和Bash脚本编写

安装工具

sudo apt install ifop

脚本编写

#!/bin/bashmax_data_per_connection=2.5  # 每个连接的最大数据量,单位为GB
max_connections=20  # 允许的最大连接数
log_file="/var/log/network_monitor.log"  # 日志文件路径
max_log_size=10  # 日志文件的最大大小,单位为MB
backup_dir="/var/log/backup_logs"  # 备份日志的目录# 创建备份目录
mkdir -p "$backup_dir"while true; do# 使用 iftop 获取实时网络流量信息network_data=$(iftop -t -s 1 | grep "Total send and receive" | awk '{print $5}')# 获取当前时间戳current_timestamp=$(date +"%Y-%m-%d %H:%M:%S")# 记录网络流量信息到日志文件echo "$current_timestamp - Total Network Data: $network_data" >> "$log_file"# 解析网络数据信息total_data=$(echo "$network_data" | sed 's/\([0-9]*\.[0-9]*\)\([KMGT]\)/\1 \2/g' | awk '{if ($2=="G") $1=$1*1024; if ($2=="T") $1=$1*1024*1024; if ($2=="M") $1=$1; print $1}')# 判断是否超过允许的总数据量if (( $(echo "$total_data > $max_connections" | bc -l) )); thenecho "$current_timestamp - Total data exceeded the allowed limit. Possible anomaly detected." >> "$log_file"# 在此处添加触发警报的逻辑,例如发送电子邮件或使用其他通知机制fi# 检查日志文件大小并进行轮转current_size=$(du -m "$log_file" | cut -f1)if ((current_size >= max_log_size)); thenbackup_file="$backup_dir/$(date +"%Y%m%d%H%M%S")_network_monitor.log"cp "$log_file" "$backup_file"> "$log_file"echo "$current_timestamp - Log rotated. Backup: $backup_file" >> "$log_file"fisleep 60  # 间隔时间,可以根据需要调整
done

这个脚本使用iftop命令获取实时网络流量信息,然后解析并记录到日志文件中。脚本中的其他部分与之前的脚本相似,包括判断是否超过允许的总数据量以及日志轮转功能。可以根据实际需求进行调整。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/414120.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序(七)navigator点击效果

注释很详细&#xff0c;直接上代码 新增内容&#xff1a; 1.默认效果 2.无效果 3.激活效果 源码&#xff1a; index.wxml //如果 <navigator url"/pages/logs/logs">跳转到log页面&#xff08;默认&#xff09; </navigator><navigator url"/pa…

CSS实现平行四边形

1、为什么实现平行四边形 在日常开发过程中&#xff0c;有些时候我们可以会遇到一种情况&#xff0c;如可视化大屏中要求我们横线实现对应的进度条&#xff0c;但进度条的内容是由无数个平行四边形组装类似于进度条的形式&#xff0c;那么我们就需要使用CSS来进行对应的实现。 …

【Redis】持久化机制

前言 Redis的数据全部存储在内存&#xff0c;如果机器突然宕机&#xff0c;那么数据就会全部丢失&#xff0c;因此必须有一种机制来保证 Redis 的数据不会因为故障而丢失&#xff0c;这种机制就是 Redis 的持久化机制。Redis为我们提供了两种持久化方案&#xff0c;一种是基于…

MAC iterm 显示git分支名

要在Mac上的iTerm中显示Git分支名&#xff0c;您需要使用一个名为“Oh My Zsh”的插件。Oh My Zsh是一个流行的Zsh框架&#xff0c;它提供了许多有用的功能和插件&#xff0c;包括在终端中显示Git分支名。 以下是在iTerm中显示Git分支名的步骤&#xff1a; 1、安装Oh My Zsh&…

IntelliJ IDEA 中输出乱码解决

最近tomcat突然在控制台输出乱码&#xff0c;各种乱码问题&#xff0c;查阅大量的资料&#xff0c;最终得以解决. IDEA控制台输出乱码 问题一&#xff1a;idea中tomcat控制台输出乱码 运行本地的tomcat\bin\start.bat文件页面显示正常 在idea中显示乱码 解决&#xff1a; 根…

Java异常处理--自定义异常类及课后练习

文章目录 一、自定义异常&#xff08;1&#xff09;为什么需要自定义异常类&#xff08;2&#xff09;自定义异常类的定义及使用1、如何自定义异常类2、如何使用自定义异常类3、代码及总结3.1 代码3.2 总结 &#xff08;3&#xff09;注意点 二、练习&#xff08;1&#xff09;…

性能测试jmeter

参考up主 啥时当叫兽的个人空间-啥时当叫兽个人主页-哔哩哔哩视频 IMBA_RAILGUN的个人空间-IMBA_RAILGUN个人主页-哔哩哔哩视频 大丫头胖的个人空间-大丫头胖个人主页-哔哩哔哩视频 选的这些怎么添加 在一个列表里面 方法调用${__time(YMD)} 两个下划线&#xff0c;后跟函数…

基于 UniAPP 社区论坛项目多端开发实战

社区论坛项目多端开发实战 基于 UniAPP 社区论坛项目多端开发实战一、项目准备1.1 ThinkSNS 简介及相关文档1.2 使用 UniAPP 构建项目1.3 构建项目文件结构1.4 配置页面 TabBar 导航1.5 使用 npm 引入 uView UI 插件库 二、首页功能实现2.1 首页 header 广告位轮播图功能实现2.…

网络攻击与检测防御:维护数字安全的关键挑战

随着数字化时代的深入&#xff0c;网络攻击已成为企业和个人面临的严峻挑战之一。本文将深入探讨不同类型的网络攻击&#xff0c;以及有效的检测和防御策略&#xff0c;以确保网络系统的安全性和稳定性。 1. 常见网络攻击类型&#xff1a; DDoS 攻击&#xff1a;分布式拒绝服…

基于springboot+vue的旅游网站系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

有效防范网络风险的关键措施

在数字化时代&#xff0c;企业面临着日益复杂和频繁的网络风险。提高员工的网络安全意识是防范网络威胁的关键一步。本文将探讨企业在提升网络安全意识方面可以采取的措施&#xff0c;以有效预防潜在的网络风险。 1. 开展网络安全培训&#xff1a;企业应定期组织网络安全培训&…

文心一言 VS 讯飞星火 VS chatgpt (181)-- 算法导论13.4 4题

四、用go语言&#xff0c;在 RB-DELETE-FIXUP 代码的哪些行中&#xff0c;可能会检查或修改哨兵 T.nil &#xff1f; 文心一言&#xff1a; RB-DELETE-FIXUP 是红黑树中的一个操作&#xff0c;用于在删除一个节点后进行必要的调整以保持红黑树的性质。在这个过程中&#xff0…