免费注册 查看新帖 |

Chinaunix

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

IPTABLES中怎么提取IP [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-10 16:03 |只看该作者 |倒序浏览
公司的防火墙策略是默认关闭网站浏览的, 现在想打开德邦物流的网站,发现这个网站的IP有很多个
在IPTABLES中一条一条的加入不太方便, 想把这些IP放在一个脚本中用个变量一一读取,
像: iptables -A FORWARD -p tcp --dport 80 -s 192.168.0.0/24 -d  $IPADDR -j ACCEPT 这样的。

这中间的变量该怎么写啊

写几个这IP出来
89.234.39.243
78.136.20.73
209.85.175.127
222.173.188.38
121.14.38.205


用PERL又怎么写呢

论坛徽章:
0
2 [报告]
发表于 2009-03-10 16:09 |只看该作者
把这些IP写到单独的文件里面,然后逐行读取。
#!/bin/ksh
while read line
do
someprogram
done <txt

论坛徽章:
0
3 [报告]
发表于 2009-03-10 16:12 |只看该作者

回复 #2 shaneqi 的帖子

谢谢哦

用PERL该怎么写呢

论坛徽章:
0
4 [报告]
发表于 2009-03-10 16:13 |只看该作者

回复 #1 kggg 的帖子

你要的是这样的吗???
for IPADDR in `cat c1`;do echo "iptables -A FORWARD -p tcp --dport 80 -s 192.168.0.0/24 -d  $IPADDR -j ACCEPT" >> c ;done
我把你的那些IP都写到一个文件里
[root@zhang shell]# cat c1
89.234.39.243
78.136.20.73
209.85.175.127
222.173.188.38
121.14.38.205

执行后就是这个结果,不知道是不是你想要的:
[root@zhang shell]# cat c
iptables -A FORWARD -p tcp --dport 80 -s 192.168.0.0/24 -d  89.234.39.243 -j ACCEPT
iptables -A FORWARD -p tcp --dport 80 -s 192.168.0.0/24 -d  78.136.20.73 -j ACCEPT
iptables -A FORWARD -p tcp --dport 80 -s 192.168.0.0/24 -d  209.85.175.127 -j ACCEPT
iptables -A FORWARD -p tcp --dport 80 -s 192.168.0.0/24 -d  222.173.188.38 -j ACCEPT
iptables -A FORWARD -p tcp --dport 80 -s 192.168.0.0/24 -d  121.14.38.205 -j ACCEPT

perl不会,建议你还是到perl版块去问吧,呵呵!

论坛徽章:
0
5 [报告]
发表于 2009-03-10 16:13 |只看该作者

回复 #3 kggg 的帖子

那你等flw过来
或者发到perl版去

论坛徽章:
0
6 [报告]
发表于 2009-03-10 16:16 |只看该作者

回复 #4 飞鸿无痕 的帖子

谢谢

我想要的效果其实是想只用一条IPTABLES语句, IP则用变量在一个文件中一一读取,这样下次还有要添加IP的话, 就可以直接在文件中加入就可以, 没必要再添加一条IPTABLES语句了。

论坛徽章:
0
7 [报告]
发表于 2009-03-10 16:16 |只看该作者

回复 #3 kggg 的帖子

这样可能行......

#!/usr/bin/perl

while(<DATA>){
chomp($_);
$cmd="iptables -A FORWARD -p tcp --dport 80 -s 192.168.0.0/24 -d  $_ -j ACCEPT";
print $cmd;
print "\n"
}

__DATA__
89.234.39.243
78.136.20.73
209.85.175.127
222.173.188.38
121.14.38.205

论坛徽章:
0
8 [报告]
发表于 2009-03-10 16:23 |只看该作者

回复 #7 shaneqi 的帖子

Thanks

不过这个只是打印出来了, 没有插到IPTABLES里去。

论坛徽章:
0
9 [报告]
发表于 2009-03-10 16:25 |只看该作者

回复 #8 kggg 的帖子

你要是想执行的话就把print改成system($cmd);

论坛徽章:
0
10 [报告]
发表于 2009-03-10 16:35 |只看该作者
这个不是在shell一级就可以完成的吗?需要借助工具?
如4楼:
for IPADDR in `cat ipfile`
  do
     iptables -A FORWARD -p tcp --dport 80 -s 192.168.0.0/24 -d  $IPADDR -j ACCEPT  
  done
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP