SSH数据流量监控

news2024/10/2 1:25:27

简介

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

脚本内容

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

#!/bin/bash

max_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) )); then
        echo "$(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"
    fi

    sleep 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) )); then
    echo "$(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"
fi

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

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

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

使用iftop和Bash脚本编写

安装工具

sudo apt install ifop

脚本编写

#!/bin/bash

max_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) )); then
        echo "$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)); then
        backup_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"
    fi

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件测评中心▏正式验收测试和非正式验收的优缺点简析

软件正式验收测试需要非常严格的管理&#xff0c;是对系统测试的延续&#xff0c;这种验收测试的测试用例应是系统测试的子集。非正式验收测试不像正式验收测试那么严格&#xff0c;不需要执行指定的测试用例&#xff0c;可以由测试人员自主决定&#xff0c;但制定测试用例时必…

node.js(express.js)+mysql实现登录功能

文章目录 前言实现步骤 实现步骤一、检测登录表单的数据是否合法&#xff08;3&#xff09;新建schema/user.js&#xff08;4&#xff09;在routes/use.js中引入schema/user.js中的方法reg_login_schema&#xff0c;代码如下&#xff1a; 二、根据用户名查询用户的数据三、判断…

浅析Redis①:命令处理核心源码分析(上)

写在前面 Redis作为我们日常工作中最常使用的缓存数据库&#xff0c;其重要性不言而喻&#xff0c;作为普调开发者&#xff0c;我们在日常开发中使用Redis&#xff0c;主要聚焦于Redis的基层数据结构的命令使用&#xff0c;很少会有人对Redis的内部实现机制进行了解&#xff0c…

C++:类与结构体的对比

2024年1月18日 内容来自The Cherno:C系列 -------------------------------------------------------------------------------------------------------------------------------- C中关于class与struct&#xff0c;几乎没有区别&#xff0c;只有一个关于“可见度”的区别…

Go 爬虫之 colly 从入门到不放弃指南

文章目录 概要介绍如何学习官方文档如何安装快速开始如何配置调试分布式代理层面执行层面存储层面存储多收集器配置优化持久化存储启用异步加快任务执行禁止或限制 KeepAlive 连接扩展总结如果想用 GO 实现爬虫能力,该如何做呢?抽时间研究了 Go 的一款爬虫框架 colly。 概要…

【前后端的那些事】15min快速实现图片上传,预览功能(ElementPlus+Springboot)

文章目录 Element Plus SpringBoot实现图片上传&#xff0c;预览&#xff0c;删除效果展示 1. 后端代码1.1 controller1.2 service 2. 前端代码2.1 路由创建2.2 api接口2.2 文件创建 3. 前端上传组件封装 前言&#xff1a;最近写项目&#xff0c;发现了一些很有意思的功能&…

SD-WAN组网设计原则:灵活、安全、高效

在实现按需、灵活和安全的SD-WAN组网方案中&#xff0c;我们必须遵循一系列关键的设计原则&#xff0c;以确保网络的可靠性和效率。通过以下几点设计原则&#xff0c;SD-WAN能够满足企业对灵活性、安全性和高效性的迫切需求。 灵活的Overlay网络互联 SD-WAN通过IP地址在站点之间…

appium之联动pycharm

前置条件&#xff1a; 1.java环境安装好了 2.android-sdk安装好&#xff08;uiautomatorviewer 也可以把这个启动起来&#xff09; 3.appium安装好 4.adb devices查看下设备是否连接 pycharm入门代码--固定写法 from appium import webdriver# 定义字典变量 desired_caps …

SpringMVC下半篇之异常处理器及日期转换器

3.异常处理器 如果不加以异常处理&#xff0c;错误信息肯定会抛在浏览器页面上&#xff0c;这样很不友好&#xff0c;所以必须进行异常处理。 3.1.异常处理思路 系统的dao、service、controller出现都通过throws Exception向上抛出&#xff0c;最后由springmvc前端控制器交由…

线性代数基础【5】特征值和特征向量

第五章 特征值和特征向量 第一节、特征值和特征向量的基本概念 一、特征值和特征向量的理论背景 在一个多项式中,未知数的个数为任意多个,且每一项次数都是2的多项式称为二次型,二次型分为两种类型:即非标准二次型及标准二次型 注意: ①二次型X^T AX为非标准二次型的充分必…

在线扒站网PHP源码-在线扒站工具网站源码

源码介绍 这是一款在线的网站模板下载程序&#xff0c;也就是我们常说的扒站工具&#xff0c;利用它我们可以很轻松的将别人的网站模板样式下载下来&#xff0c;这样就可以大大提高我们编写前端的速度了&#xff01;注&#xff1a;扒取的任何站点不得用于商业、违法用途&#…

02 MyBatisPlus核心功能之基于Mapper接口CRUD+基于Service接口实现CRUD

项目结构&#xff1a; 1.1 Insert方法 // 插入一条记录 // T 就是要插入的实体对象 // 默认主键生成策略为雪花算法&#xff08;后面讲解&#xff09; //返回值是影响条数 int insert(T entity);1.2 Delete方法 // 根据 entity 条件&#xff0c;删除记录 int delete(Param(…

【PAT甲级】1178 File Path(25分)[文件树,模拟,unordered_map]

问题思路&#xff1a; 在不断输入的过程中&#xff0c;可以通过层深和一个二维的vector数组来建立一棵树。即每输入一个节点&#xff0c;应当作为该节点上一层的最后一个节点的子孩子。用一个哈希value来指定节点的id&#xff0c;通过一个last记录每个节点id&#xff08;此时作…

2023年移远车载全面开花,智能座舱加速进击

作为汽车智能化的关键组件&#xff0c;车载模组正发挥着越来越重要的作用。 移远通信进入车载模组领域近十年&#xff0c;已形成了完善的车载产品队列&#xff0c;不但在5G/4G车载通信、智能座舱、C-V2X车路协同等领域打造了一枝独秀的产品线&#xff0c;也推出了车规级Wi-Fi/蓝…

Verilog基础:强度建模(一)

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 一、强度建模基础 Verilog HDL提供了针对线网信号0、1、x、z的精准强度建模方式&#xff0c;这样可以允许将两个线网信号进行线与操作从而更加精确地描述出硬件行…

【论文阅读】Deep Graph Contrastive Representation Learning

目录 0、基本信息1、研究动机2、创新点3、方法论3.1、整体框架及算法流程3.2、Corruption函数的具体实现3.2.1、删除边&#xff08;RE&#xff09;3.2.2、特征掩盖&#xff08;MF&#xff09; 3.3、[编码器](https://blog.csdn.net/qq_44426403/article/details/135443921)的设…

[python]裁剪文件夹中所有pdf文档并按名称保存到指定的文件夹

最近在写论文的实验部分&#xff0c;由于latex需要pdf格式的文档&#xff0c;审稿专家需要对pdf图片进行裁剪放大&#xff0c;以保证图片质量。 原图&#xff1a; 裁剪后的图像&#xff1a; 代码粘贴如下。将input_folder和output_folder替换即可。(x1, y1)&#xff0c; (x2…

【Go面试向】rune和byte类型的认识与使用

【Go】rune和byte类型的认识与使用 大家好 我是寸铁&#x1f44a; 总结了一篇rune和byte类型的认识与使用的文章✨ 喜欢的小伙伴可以点点关注 &#x1f49d; byte和rune类型定义 byte,占用1个字节&#xff0c;共8个比特位&#xff0c;所以它实际上和uint8没什么本质区别,它表示…

一文了解【完全合作关系】下的【多智能体强化学习】

处于完全合作关系的多智能体的利益一致&#xff0c;获得的奖励相同&#xff0c;有共同的目标。比如多个工业机器人协同装配汽车&#xff0c;他们的目标是相同的&#xff0c;都希望把汽车装好。 在多智能体系统中&#xff0c;一个智能体未必能观测到全局状态 S。设第 i 号智能体…