免费注册 查看新帖 |

Chinaunix

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

急!问一个shell脚本问题!!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-05-19 16:04 |只看该作者 |倒序浏览
在编写iptables脚本是碰到一个问题如下
目前有两组数据,如
第一组SIP:1 2 3 4 5
第二组DIP:a b c d e
这两组数据是对应的,也就是说1和a对应 2和b对应 .......
现在我想在一个iptables命令行中使用两个变量数组,比如说
iptables -A FORWARD -s $SIP -d $DIP -j ACCEPT


请问怎么样才能实现呢?用for语句我只会一次循环

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2003-05-19 17:25 |只看该作者

急!问一个shell脚本问题!!!

直接说出来吧 ̄!这里又没有黑客,看着有点晕

这个东东我看你可以考虑去shell版问一下了
:)

论坛徽章:
0
3 [报告]
发表于 2003-05-19 18:11 |只看该作者

急!问一个shell脚本问题!!!

UP

论坛徽章:
0
4 [报告]
发表于 2003-05-19 18:36 |只看该作者

急!问一个shell脚本问题!!!

不用for循环,也可以对多个数组进行历遍,

#!/bin/ksh
set -A sip 1 2 3 4 5
set -A dip a b c d e
n=0
while ((n<5))
do
print "\${sip[$n]}is $(print ${sip[$n]}),\${dip[$n]}is $(print ${dip[$n]})"
((n+=1))
done

论坛徽章:
0
5 [报告]
发表于 2003-05-19 18:42 |只看该作者

急!问一个shell脚本问题!!!

环境:SCO UNIX 5.0.5

  1. #!/bin/sh
  2. i=`awk '{print NF}' sip`
  3. while [ $i -gt 0 ]
  4. do
  5.         SIP=`cut -d" " -f $i sip`
  6.         DIP=`cut -d" " -f $i dip`
  7.         iptables -A FORWARD -s $SIP -d $DIP -j ACCEPT
  8.         i=`expr $i - 1`
  9. done
复制代码

论坛徽章:
0
6 [报告]
发表于 2003-05-19 18:57 |只看该作者

急!问一个shell脚本问题!!!

谢谢大家,我是在REDHAT环境下使用。
有什么差别嘛?

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

急!问一个shell脚本问题!!!

我用的就是RH8.

论坛徽章:
0
8 [报告]
发表于 2003-05-19 19:14 |只看该作者

急!问一个shell脚本问题!!!

实际情况是这样的,我在fuser.conf里设定了SIP和DIP
SIP=192.168.2.18 192.168.2.21 192.168.2.22
DIP=202.102.16.1 202.102.16.1 202.102.16.8

而在firewall文件里:
#!/bin/bash


i=`awk'{print NF}'SIP`
while [$i -gt 0]
do
SIP=`less /etc/fuser.conf | grep "SIP" | cut -d = -f $i SIP`
DIP=`less /etc/fuser.conf | grep "DIP" | cut -d = -f $i DIP`
iptables -A FORWARD -s $SIP -d $DIP -j ACCEPT
        i=`expr $i - 1`
done

这样可行嘛?

论坛徽章:
0
9 [报告]
发表于 2003-05-20 02:07 |只看该作者

急!问一个shell脚本问题!!!

原帖由 "gefans" 发表:
实际情况是这样的,我在fuser.conf里设定了SIP和DIP
SIP=192.168.2.18 192.168.2.21 192.168.2.22
DIP=202.102.16.1 202.102.16.1 202.102.16.8


...

我觉得如果 fuser.conf 是你自己定义的话,写成下面这种形式会更好,脚本容易处理,将来修改和扩展 SIP, DIP 的对应关系更方便,也一目了然。

  1. ...
  2. 192.168.2.18     202.102.16.1
  3. 192.168.2.21     202.102.16.1
  4. 192.168.2.22     202.102.16.8
  5. ...
复制代码


这样的的话,随便怎么处理都很方便,比如 awk 中,SIP、DIP 就分别是第一域和第二域。

论坛徽章:
0
10 [报告]
发表于 2003-05-20 08:07 |只看该作者

急!问一个shell脚本问题!!!

是我自己定义的啊,但是fuser.conf还有其他一些定义量啊!
比如
LAN1IF=eth0
LAN2IF=eth1
UPLINK=eth2
LAN1NET=192.168.2.0/24
LAN2NET=192.168.3.0/24
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP