热门标签 | 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 就能看到了.



推荐阅读
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
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社区 版权所有