shell脚本全文
#!/bin/bash
#Linux主机iptables批量修改的脚本
iptables_tcp_accept () {
iptables -A INPUT -s $IP_ADDRESS -p tcp $TCP_PORT -j ACCEPT
}
iptables_tcp_dport_accept () {
iptables -A INPUT -s $IP_ADDRESS -p tcp --dport $TCP_PORT -j ACCEPT
}
iptables_tcp_drop () {
iptables -A INPUT -p tcp --dport $TCP_PORT -j DROP
}
cat <<- _EOF_
请选择你的iptables修改方式:
1)iptables -A INPUT -s IP地址 -p tcp 端口号 -j ACCEPT
2)iptables -A INPUT -s IP地址 -p tcp --dport 端口号 -j ACCEPT
3)iptables -A INPUT -p tcp --dport 端口号-j DROP
4)exit
说明:
1) 请将IP地址和PORT端口号放在iptables_tcp_accept.txt
2)请将请将IP地址和PORT端口号放在iptables_tcp_dport_accept.txt
3) 请将PORT端口号放在iptables_tcp_drop.txt
4) 退出程序
注意点:如果文件在windows下创建,导入Linux后请操作: sed -i 's/\r$//' 文件名
_EOF_
while true; do
read -p "请输入您想要选择的修改方式序号:" NUMBER
case $NUMBER in
1 ) if [[ -e iptables_tcp_accept.txt ]]; then
while read IP_ADDRESS TCP_PORT; do
iptables_tcp_accept
done < iptables_tcp_accept.txt
else
echo "iptables_tcp_accept.txt不存在,请创建。"
fi
;;
2 ) if [[ -e iptables_tcp_dport_accept.txt ]]; then
while read IP_ADDRESS TCP_PORT; do
iptables_tcp_dport_accept
done < iptables_tcp_dport_accept.txt
else
echo "iptables_tcp_dport_accept.txt不存在,请创建。"
fi
;;
3 ) if [[ -e iptables_tcp_drop.txt ]]; then
while read TCP_PORT; do
iptables_tcp_drop
done < iptables_tcp_drop.txt
else
echo "iptables_tcp_drop.txt不存在,请创建。"
fi
;;
4 ) echo "已退出程序!"
break
;;
esac
done
脚本说明
文字说明,在terminal中显示,供用户选择需要的iptables修改方式以及创建相应的TXT,将需要批量添加或删除的路由、端口号放入TXT中。注意IP地址分行存入,IP和端口号同一行放入。
注意如果文件在windows下创建,导入Linux后请操作: sed -i 's/\r$//' 文件名
cat <<- _EOF_
请选择你的iptables修改方式:
1)iptables -A INPUT -s IP地址 -p tcp 端口号 -j ACCEPT
2)iptables -A INPUT -s IP地址 -p tcp --dport 端口号 -j ACCEPT
3)iptables -A INPUT -p tcp --dport 端口号-j DROP
4)exit
说明:
1) 请将IP地址和PORT端口号放在iptables_tcp_accept.txt
2)请将请将IP地址和PORT端口号放在iptables_tcp_dport_accept.txt
3) 请将PORT端口号放在iptables_tcp_drop.txt
4) 退出程序
注意点:如果文件在windows下创建,导入Linux后请操作: sed -i 's/\r$//' 文件名
_EOF_
使用case命令作选择,分别对应文字说明中的4项。在每一项中,先使用if判断对应的TXT文件是否存在。如果存在则执行read选项,从TXT文件分行读取IP地址、端口号;如果不存在则提醒创建对应TXT文件。
while true; do
read -p "请输入您想要选择的修改方式序号:" NUMBER
case $NUMBER in
1 ) if [[ -e iptables_tcp_accept.txt ]]; then
while read IP_ADDRESS TCP_PORT; do
iptables_tcp_accept
done < iptables_tcp_accept.txt
else
echo "iptables_tcp_accept.txt不存在,请创建。"
fi
;;
2 ) if [[ -e iptables_tcp_dport_accept.txt ]]; then
while read IP_ADDRESS TCP_PORT; do
iptables_tcp_dport_accept
done < iptables_tcp_dport_accept.txt
else
echo "iptables_tcp_dport_accept.txt不存在,请创建。"
fi
;;
3 ) if [[ -e iptables_tcp_drop.txt ]]; then
while read TCP_PORT; do
iptables_tcp_drop
done < iptables_tcp_drop.txt
else
echo "iptables_tcp_drop.txt不存在,请创建。"
fi
;;
4 ) echo "已退出程序!"
break
;;
esac
done
在判断文件存在后,while执行时分别调用三个函数,完成不同方式的iptables修改操作。若是选择4,break执行退出while循环。
iptables_tcp_accept () {
iptables -A INPUT -s $IP_ADDRESS -p tcp $TCP_PORT -j ACCEPT
}
iptables_tcp_dport_accept () {
iptables -A INPUT -s $IP_ADDRESS -p tcp --dport $TCP_PORT -j ACCEPT
}
iptables_tcp_drop () {
iptables -A INPUT -p tcp --dport $TCP_PORT -j DROP
}
实际环境演示
[***@localhost route]$ ./linux_iptables_add_drop.sh
请选择你的iptables修改方式:
1)iptables -A INPUT -s IP地址 -p tcp 端口号 -j ACCEPT
2)iptables -A INPUT -s IP地址 -p tcp --dport 端口号 -j ACCEPT
3)iptables -A INPUT -p tcp --dport 端口号-j DROP
4)exit
说明:
1) 请将IP地址和PORT端口号放在iptables_tcp_accept.txt
2)请将请将IP地址和PORT端口号放在iptables_tcp_dport_accept.txt
3) 请将PORT端口号放在iptables_tcp_drop.txt
4) 退出程序
注意点:如果文件在windows下创建,导入Linux后请操作: sed -i 's/\r$//' 文件名
请输入您想要选择的修改方式序号:1
iptables -A INPUT -s 192.168.1.1 -p tcp 20:8080 -j ACCEPT
iptables -A INPUT -s 192.168.2.2 -p tcp 13389 -j ACCEPT
iptables -A INPUT -s 192.168.191.152 -p tcp 33890 -j ACCEPT
请输入您想要选择的修改方式序号:2
iptables -A INPUT -s 192.168.1.1 -p tcp --dport 20:8080 -j ACCEPT
iptables -A INPUT -s 192.168.2.2 -p tcp --dport 13389 -j ACCEPT
iptables -A INPUT -s 192.168.191.152 -p tcp --dport 33890 -j ACCEPT
请输入您想要选择的修改方式序号:3
iptables -A INPUT -p tcp --dport 33890 -j DROP
iptables -A INPUT -p tcp --dport 20:13389 -j DROP
iptables -A INPUT -p tcp --dport 12345 -j DROP
请输入您想要选择的修改方式序号:4
已退出程序!