一、
#!/bin/sh
LANIP=192.168.1.254
LANnetmask=255.255.255.0
LANNET=192.168.1.0/24
GATEWAY=220.163.8.1
WANnetmask=255.255.255.252
WANIP0=220.163.8.2
WANIP1=220.163.8.3
WANIP2=220.163.8.4
WANIP3=220.163.8.5
WANIP4=220.163.8.6
WANIP5=220.163.8.7
WANIP6=220.163.8.8
ifconfig eth0 $LANIP netmask $LANnetmask up
ifconfig eth1 $WANIP0 netmask $WANnetmask up
route add default gw $GATEWAY dev eth1
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s $LANNET -j SNAT --to-source $WANIP0
iptables -t nat -A POSTROUTING -s $LANNET -j SNAT --to-source $WANIP1
iptables -t nat -A POSTROUTING -s $LANNET -j SNAT --to-source $WANIP2
iptables -t nat -A POSTROUTING -s $LANNET -j SNAT --to-source $WANIP3
iptables -t nat -A POSTROUTING -s $LANNET -j SNAT --to-source $WANIP4
iptables -t nat -A POSTROUTING -s $LANNET -j SNAT --to-source $WANIP5
iptables -t nat -A POSTROUTING -s $LANNET -j SNAT --to-source $WANIP6
iptables -t nat -A POSTROUTING -s $LANNET -j SNAT --to-source $WANIP7
while true ; do
sleep 50
#WANIPN=ifconfig eth0 |grep "inet addr:" | awk -F: '{ print $2}' | awk '{print $1}'
UNREPLIED=`cat /proc/net/ip_conntrack |grep UNREPLIED |wc -l`
if [ $UNREPLIED -ge 100 ]; then
i=echo $(($RANDOM%7))
WANIP=WANIP$i
ifconfig eth1 $WANIP netmask $WANnetmask
fi
done
exit 0
二、目录/文件常用判断
# #!/bin/sh
#
# myPath="/var/log/httpd/"
# myFile="/var /log/httpd/access.log"
#
# # 这里的
-x 参数判断$myPath
是否存在并且是否具有可执行权限 # if [ ! -x "$myPath"]; then
# mkdir "$myPath"
# fi
#
# # 这里的
-d 参数判断$myPath
是否存在 # if [ ! -d "$myPath"]; then
# mkdir "$myPath"
# fi
#
# # 这里的
-f参数判断$myFile
是否存在 # if [ ! -f "$myFile" ]; then
# touch "$myFile"
# fi
#
# # 其他参数还有-n,
-n是判断
一个变量是否有值 # if [ ! -n "$myVar" ]; then
# echo "$myVar is empty"
# exit 0
# fi
#
# # 两个变量
判断是否相等 # if [ "$var1" = "$var2" ]; then
# echo '$var1 eq $var2'
# else
# echo '$var1 not eq $var2'
# fi
三、将当前目录下的所有 .pyc 文件全部删除(包括子目录)
find ./ -name "*.pyc" -delete
四、获取本机IP地址:
1。IPV4的
ifconfig eth0 |grep "inet addr:" | awk -F: '{ print $2}' | awk '{print $1}'
ifconfig eth0 |awk '/inet addr/'| awk -F: '{ print $2}' | awk '{print $1}'
ifconfig -a|awk '/(cast)/ {print $2}'|cut -d':' -f2|head -1
2.IPV6的:
ifconfig -a|egrep 'inet6 addr:|address: '|cut -d':' -f2-|cut -d'/' -f1|head -1|tr -d ' '
五、$@等特定shell变量的含义
在shell脚本的实际编写中,有一些特殊的变量十分有用:
$# 传递到脚本的参数个数
$@ 与$#相同,但是使用时加引号,并在引号中返回每个参数
$* 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的进程ID号
$- 显示shell使用的当前选项,与set命令功能相同
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误
****************
#!/bin/sh
IPLIST="99 95 110 137 67 74 80"
for i in $IPLIST
do
iptables -A FORWARD -s 192.168.2.$i -j DROP
done
阅读(594) | 评论(0) | 转发(0) |