免费注册 查看新帖 |

Chinaunix

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

if 判断中的作用 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-19 20:19 |只看该作者 |倒序浏览
#!/bin/bash
#this is a common firewall created by 2007-7-29

#define some variable
IPT=/sbin/iptables
CONNECTION_TRACKING="1"
INTERNET="eth0"
CLASS_A="10.0.0.0/8"
CLASS_B="172.16.0.0/12"
CLASS_C="192.168.0.0/16"
CLASS_D_MULTICAST="224.0.0.0/4"
CLASS_E_RESERVED_NET="240.0.0.0/5"
BROADCAST_SRC="0.0.0.0"
BROADCAST_DEST="255.255.255.255"
IPADDR=61.135.55.100
LOOPBACK_INTERFACE="lo"

#Remove any existing rules
$IPT -F
$IPT -X

#setting default firewall policy
$IPT --policy OUTPUT ACCEPT
$IPT --policy FORWARD DROP
$IPT -P INPUT DROP

#stop firewall
if [ "$1" = "stop" ]
then
echo "Filewall completely stopped!no firewall running!"
exit 0
fi

#setting for loopback interface
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

# Stealth Scans and TCP State Flags
# All of the bits are cleared
$IPT -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
# SYN and FIN are both set
$IPT -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
# SYN and RST are both set
$IPT -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
# FIN and RST are both set
$IPT -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
# FIN is the only bit set, without the expected accompanying ACK
$IPT -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP
# PSH is the only bit set, without the expected accompanying ACK
$IPT -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROP
# URG is the only bit set, without the expected accompanying ACK
$IPT -A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP

# Using Connection State to By-pass Rule Checking
if [ "$CONNECTION_TRACKING" = "1" ]; then
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A OUTPUT -m state --state INVALID -j DROP
fi

最近刚开始学习shell,不知道为什么,我发现if [ "$CONNECTION_TRACKING" = "1" ]这个语句中,$CONNECTION_TRACKING这个变量无论=1或=0,下面的语句都会执行,这应该不对吧,如果真这样了,就没有意思了,谢谢大家的指导!

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
2 [报告]
发表于 2009-06-19 20:27 |只看该作者
应该不会。

论坛徽章:
0
3 [报告]
发表于 2009-06-19 20:38 |只看该作者
真是这样shell就没意思了

论坛徽章:
0
4 [报告]
发表于 2009-06-19 20:41 |只看该作者
就是了,我也应该觉得是这样的,但是结果让我想不通,也不知道是不是哪里错了

论坛徽章:
0
5 [报告]
发表于 2009-06-19 20:43 |只看该作者

  1. [rockfall@~]$CONNECTION_TRACKING="1"
  2. [rockfall@~]$if [ "$CONNECTION_TRACKING" = "1" ]; then echo 1;else echo 0;fi
  3. 1
  4. [rockfall@~]$CONNECTION_TRACKING="0"
  5. [rockfall@~]$if [ "$CONNECTION_TRACKING" = "1" ]; then echo 1;else echo 0;fi
  6. 0
复制代码

论坛徽章:
0
6 [报告]
发表于 2009-06-19 20:59 |只看该作者
那如果是这样的了
[rockfall@~]$CONNECTION_TRACKING="1"
$if [ "$CONNECTION_TRACKING" = "0" ]

这样会怎么样

论坛徽章:
0
7 [报告]
发表于 2009-06-19 21:02 |只看该作者
楼主难道对1+1=2这样的数学题都要质疑?
man  test
  1.   STRING1 = STRING2
  2.               the strings are equal
复制代码

论坛徽章:
0
8 [报告]
发表于 2009-06-19 21:07 |只看该作者

回复 #6 jun821 的帖子

不明白就试试,现在的电脑还不会骗你

  1. [rockfall@~]$CONNECTION_TRACKING="1"[rockfall@~]$if [ "$CONNECTION_TRACKING" = "0" ]; then echo 1;else echo 0;fi
  2. 0

复制代码

论坛徽章:
0
9 [报告]
发表于 2009-06-19 21:11 |只看该作者
原帖由 ywlscpl 于 2009-6-19 21:02 发表
楼主难道对1+1=2这样的数学题都要质疑?
man  test
  STRING1 = STRING2
              the strings are equal



大脑有点转不动,多多包涵

论坛徽章:
0
10 [报告]
发表于 2009-06-19 21:27 |只看该作者
那我就是不明白了为什么我把$CONNECTION_TRACKING= "1"定义为真
在判断的时候if [ "$CONNECTION_TRACKING" = "0" ]为假还是会执行前面的语句,如果一般的话,为真才是前面,为假就是后面,这样是为假的,为什么还是执行前面的?
例:
         $CONNECTION_TRACKING= "1"
       if [ "$CONNECTION_TRACKING" = "0" ]; then
    $IPT -P INPUT DROP
     $IPT -P OUTPUT DROP
     $IPT -P FORWARD DROP
  else
     $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
fi
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP