热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux某时段监控流量ip,linuxredhat5.2做流量监控与ipmac绑定1

最近几天忙了下linux下的监控和ip-mac的绑定,我是个小菜鸟,我就把自己忙的瞎捣鼓的事记录一下,嘿嘿,大家不要嘲笑我噢,首先我要做的是流量的监控,由于我是个小菜

最近几天忙了下linux下的监控和ip-mac的绑定,我是个小菜鸟,我就把自己忙的瞎捣鼓的事记录一下,嘿嘿,大家不要嘲笑我噢,首先我要做的是流量的监控,由于我是个小菜鸟所以我的脚本水平实在有限所以嘛我就跟网上搜了一个perl的脚本,这个脚本据我使用结果才发现它是一个按/s流量来限制的,就是说假如你下载东东超过200k/s它就会在iptables里面自动添加一条DROP下面是这三个脚本的内容..

第一个脚本

banip.sh

# Date:2009-03-12

# Author:HyphenWang

# Version:1.0

SEC="$3";

IPTABLES="/sbin/iptables"

case $1 in

"INPUT")

$IPTABLES -I FORWARD -d $2 -j DROP

;;

"OUTPUT")

$IPTABLES -I FORWARD -s $2 -j DROP

;;

esac

sleep $SEC;

case $1 in

"INPUT")

$IPTABLES -D FORWARD -d $2 -j DROP

;;

"OUTPUT")

$IPTABLES -D FORWARD -s $2 -j DROP

;;

esac

exit 0

第二个脚本:

ipflow_1.3

#!/usr/bin/perl -w

# Date:2009-03-14

# Author:HyphenWang

# Version:1.3

use strict;

my $IPTABLES_CMD="/sbin/iptables -v -n -x -L FORWARD";

my $BANIP_CMD="/root/banip.sh";

my $SEC="3";

my $ZERO="1";

#my $BANIP="1";

my $BANSEC="60";

#my $HTML="1" if (defined $ARGV[0] and $ARGV[0] eq "-p");

my ($HTML,$BANIP);

my $limit_input_rate=200;

my $limit_output_rate=35;

my @exclude_ip=qw(30 153 155 200 221);

my @vzserver_ip=qw(135);

);

push (@exclude_ip,@vzserver_ip);

my (%first_input,%first_output);

my (%second_input,%second_output);

my (%ban_ip,$input_rate,$output_rate);

if (defined $ARGV[0]) {

for (@ARGV) {

$HTML = 1 if $_ eq "-p";

$BANIP = 1 if $_ eq "-b";

}

}

sub get_ipflow {

my ($ip_input,$ip_output)=@_;

for my $line (`$IPTABLES_CMD`) {

my @columns = split(/\s+/,$line);

$ip_input->{$columns[-1]}=$columns[2] if ($columns[3] eq "ACCEPT" and $columns[-1] =~ m/192\.168\.228\.\d+/);

$ip_output->{$columns[-2]}=$columns[2] if ($columns[3] eq "ACCEPT" and $columns[-2] =~ m/192\.168\.228\.\d+/);

$ban_ip{$columns[-1]}=1 if ($columns[3] eq "DROP" and $columns[-1] =~ m/192\.168\.228\.\d+/);

$ban_ip{$columns[-2]}=1 if ($columns[3] eq "DROP" and $columns[-2] =~ m/192\.168\.228\.\d+/);

}

}

get_ipflow(\%first_input,\%first_output);

sleep $SEC;

get_ipflow(\%second_input,\%second_output);

if (! defined $BANIP) {

if (! defined $HTML) {

print "Now is ".localtime()."\n";

print "-"x53,"\n";

print "IP Address\t\tIn Flow Rate\tOut Flow Rate\n";

}

else {

print

In Flow Rate

Out flow Rate

EOF

}

}

for my $ip (keys %first_input) {

if ($ZERO != 1) {

if (defined $second_input{$ip} and defined $second_output{$ip} and int(($second_input{$ip}-$first_input{$ip})/1024/$SEC) == 0) {

next;

}

}

if (defined $second_input{$ip} and defined $second_output{$ip}) {

$input_rate = ($second_input{$ip}-$first_input{$ip})/1024/$SEC;

$output_rate = ($second_output{$ip}-$first_output{$ip})/1024/$SEC;

if (! defined $BANIP) {

if (! defined $HTML) {

printf ("%s\t\t%.f KByte/s\t%.f KByte/s\n",$ip,$input_rate,$output_rate);

}

else {

printf ("

%s\n%.f KByte/s\n%.f KByte/s\n\n",$ip,$input_rate,$output_rate);

}

}

if ($input_rate >= $limit_input_rate and ! grep ("192.168.228.$_" eq $ip,@exclude_ip)) {

#system ("$BANIP_CMD INPUT $ip $BANSEC &");

print $ip,"\n" if defined $BANIP;

$ban_ip{$ip}=1;

}

if ($output_rate >= $limit_output_rate and ! grep ("192.168.228.$_" eq $ip,@exclude_ip)) {

#system ("$BANIP_CMD OUTPUT $ip $BANSEC &");

print $ip,"\n" if defined $BANIP;

$ban_ip{$ip}=1;

}

}

}

if (! defined $BANIP) {

if (! defined $HTML) {

print "-"x53,"\n";

print "Banned IP Address:\n";

}

else {

print<

Banned IP Address

EOF

}

}

if (! defined $BANIP) {

for (keys %ban_ip) {

if (! defined $HTML) {

print "$_\n";

}

else {

print

EOF

}

}

}

if (defined $HTML) {

print<

限速&#xff1a;200 KByte/s&#xff0c;若检查时发现超出该值&#xff0c;会自动中断对应的客户端IP一分钟。

若您被中断了&#xff0c;请等待&#xff0c;或告诉我。

EOF

}

第三个脚本

#!/bin/bash

for i in &#96;/root/ipflow.pl -b&#96;

do

/root/banip.sh INPUT $i 60 &

done

以上三个脚本

执行 perl ipflow_1.3 就能显示实时流量

可以写个任务计划让它自动执行

crontab -e

0-59/2 * * * * perl /ipflow_1.3 > /back.log

然后每次只要 less /back.log 就能看到了.



推荐阅读
  • 本文介绍了如何利用 Delphi 中的 IdTCPServer 和 IdTCPClient 控件实现高效的文件传输。这些控件在默认情况下采用阻塞模式,并且服务器端已经集成了多线程处理,能够支持任意大小的文件传输,无需担心数据包大小的限制。与传统的 ClientSocket 相比,Indy 控件提供了更为简洁和可靠的解决方案,特别适用于开发高性能的网络文件传输应用程序。 ... [详细]
  • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
  • 本文详细介绍了如何在Linux系统(以CentOS为例)上彻底卸载Zimbra邮件系统,包括停止服务、删除文件和用户等步骤。 ... [详细]
  • 本文详细介绍了在 React Native 开发过程中遇到的 'Could not connect to development server' 错误及其解决方法。该问题不仅影响开发效率,而且难以通过网络资源找到确切的解决方案。本文将提供详细的步骤,帮助开发者快速解决这一常见问题。 ... [详细]
  • 如何在Linux服务器上配置MySQL和Tomcat的开机自动启动
    在Linux服务器上部署Web项目时,通常需要确保MySQL和Tomcat服务能够随系统启动而自动运行。本文将详细介绍如何在Linux环境中配置MySQL和Tomcat的开机自启动,以确保服务的稳定性和可靠性。通过合理的配置,可以有效避免因服务未启动而导致的项目故障。 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • SecureCRT是一款功能强大的终端仿真软件,支持SSH1和SSH2协议,适用于在Windows环境下高效连接和管理Linux服务器。该工具不仅提供了稳定的连接性能,还具备丰富的配置选项,能够满足不同用户的需求。通过SecureCRT,用户可以轻松实现对远程Linux系统的安全访问和操作。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 本指南介绍了如何在ASP.NET Web应用程序中利用C#和JavaScript实现基于指纹识别的登录系统。通过集成指纹识别技术,用户无需输入传统的登录ID即可完成身份验证,从而提升用户体验和安全性。我们将详细探讨如何配置和部署这一功能,确保系统的稳定性和可靠性。 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • 在 CentOS 6.5 系统上部署 VNC 服务器的详细步骤与配置指南
    在 CentOS 6.5 系统上部署 VNC 服务器时,首先需要确认 VNC 服务是否已安装。通常情况下,VNC 服务默认未安装。可以通过运行特定的查询命令来检查其安装状态。如果查询结果为空,则表明 VNC 服务尚未安装,需进行手动安装。此外,建议在安装前确保系统的软件包管理器已更新至最新版本,以避免兼容性问题。 ... [详细]
  • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
    本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
author-avatar
台艾辉_435
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有