免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345下一页
最近访问板块 发新帖
查看: 11943 | 回复: 47
打印 上一主题 下一主题

高手来解决下 求一个高难度正则表达式 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-02 14:02 |只看该作者 |倒序浏览
dmesg | grep "bad"
UDP: bad checksum. From 60.11.207.170:13329 to 222.134.54.142:13217 ulen 1056
UDP: bad checksum. From 60.11.207.150:13329 to 222.134.54.142:13217 ulen 1056
UDP: bad checksum. From 220.11.207.171:13329 to 222.134.54.142:13217 ulen 1056
UDP: bad checksum. From 213.121.7.152:13329 to 222.134.54.142:13217 ulen 1056

如何取出其中的ip地址?(这是路由器日志里的,我想做个动态屏蔽问题ip)


[1-255].[0-255].[0-255].[0-255] 不要冒号和以后的东西,也不要数字前的内容




然后将取出的数值  生成以下格式文件

iptables -A INPUT -s 124.64.142.69/32 -j DROP
iptables -A INPUT -s 117.57.192.115/32 -j DROP


如果文件里边存在该数值,那么不要添加进去

论坛徽章:
0
2 [报告]
发表于 2009-05-02 14:23 |只看该作者
  1. awk -F 'From|:' '/bad checksum/&&!a[$3]++{print "iptables -A INPUT -s"$3"/32 -j DROP"}' file >newfile
复制代码

[ 本帖最后由 ywlscpl 于 2009-5-2 14:28 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2009-05-02 14:43 |只看该作者

做成定时执行可以吗?1分钟执行一次

做成定时执行可以吗?1分钟执行一次

dmesg | grep "bad checksum" >cccc
awk -F 'From|:' '/bad checksum/&&!a[$3]++{print "iptables -A INPUT -s"$3"/32 -j DROP"}' cccc >/var/tmp/activefirewall
sh /var/tmp/activefirewall

论坛徽章:
0
4 [报告]
发表于 2009-05-02 14:44 |只看该作者
  1. dmesg |awk -F 'From|:' '/bad checksum/&&!a[$3]++{print "iptables -A INPUT -s"$3"/32 -j DROP"}' |sh
复制代码


把这条语句写入某个脚本,再把脚本放入crontab每分钟执行

论坛徽章:
0
5 [报告]
发表于 2009-05-02 14:53 |只看该作者
牛人

这几天ddos把我害苦了

我都没辙了
只好求救各位了
我会继续,希望各位能大力支持
完事我分享我的防火墙程序

论坛徽章:
0
6 [报告]
发表于 2009-05-02 14:54 |只看该作者
原帖由 ywlscpl 于 2009-5-2 14:44 发表
dmesg |awk -F 'From|:' '/bad checksum/&&!a[$3]++{print "iptables -A INPUT -s"$3"/32 -j DROP"}' |sh

把这条语句写入某个脚本,再把脚本放入crontab每分钟执行


awk -F 'From|:' '/bad checksum/&&!a[$3]++{print "iptables -A INPUT -s"$3"/32 -j DROP"}' file >newfile

!a[$3]++什么意思
为什么不是a[$3]++

论坛徽章:
0
7 [报告]
发表于 2009-05-02 14:57 |只看该作者

回复 #6 ztj2247 的帖子

$3重复的不要

[ 本帖最后由 ywlscpl 于 2009-5-2 15:04 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2009-05-02 14:59 |只看该作者
原帖由 ywlscpl 于 2009-5-2 14:57 发表
重复的不要


晕 数组还能这么用的呀、。。。。

论坛徽章:
0
9 [报告]
发表于 2009-05-02 15:21 |只看该作者

那如何能删除其中的重复行

那如何能删除其中的重复行

iptables -A INPUT -s 58.22.21.46/32 -j DROP
iptables -A INPUT -s 58.22.21.46/32 -j DROP
iptables -A INPUT -s 12.222.212.146/32 -j DROP
iptables -A INPUT -s 58.22.21.46/32 -j DROP

论坛徽章:
0
10 [报告]
发表于 2009-05-02 15:25 |只看该作者
原帖由 ztj2247 于 2009-5-2 14:54 发表


awk -F 'From|:' '/bad checksum/&&!a[$3]++{print "iptables -A INPUT -s"$3"/32 -j DROP"}' file >newfile

!a[$3]++什么意思
为什么不是a[$3]++


这样生成的文件会不会出现

iptables -A INPUT -s 124.64.142.69/32 -j DROP
iptables -A INPUT -s 124.64.142.69/32 -j DROP
iptables -A INPUT -s 124.64.142.69/32 -j DROP
iptables -A INPUT -s 117.57.192.115/32 -j DROP
iptables -A INPUT -s 124.64.142.69/32 -j DROP  

这样的代码?

如何删除重复的代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP