阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

iptables交互配置脚本【Linux运维之道之脚本案例】

94次阅读
没有评论

共计 5398 个字符,预计需要花费 14 分钟才能阅读完成。

整个脚本是利用控制流(循环语句)实现一个交互的效果,再利用判断和 read 来实现配置

虽然有 200 多行代码,细看其实结构很清晰明了,一看就懂!

不过,为了能拿上台面加了很多字体颜色,不止是为了交互体验,也为了让关键字或者提示更加醒目。

同样可以用此结构来实现其他 service 的配置,个人感觉交互式的配置更直观、更简洁明了,我写了几个类似的交互配置的脚本都经常在工作中使用

代码奉上, 后面附个运行截图:

#!/bin/bash
while [“1” == “1”]
do
clear
echo “———————-menu————————”
echo -e “\033[49;32;1m(1) 重启 \033[49;35;1miptables\033[0m “
echo -e “\033[49;32;1m(2) 添加 \033[49;35;1miptables\033[49;32;1m 规则 \033[0m “
echo -e “\033[49;32;1m(3) 删除 \033[49;35;1miptables\033[49;32;1m 规则 \033[0m “
echo -e “\033[49;32;1m(4) 关闭 \033[49;35;1miptables\033[0m “
echo -e “\033[49;32;1m(5) 保存 \033[49;35;1miptables\033[49;32;1m 规则 ( 输完 ACL 后要记得保存和查看)\033[0m “
echo -e “\033[49;32;1m(6) 查看 \033[49;35;1miptables\033[49;32;1m 状态 \033[0m “
echo -e “\033[49;32;1m(7) 添加 \033[49;35;1miptables\033[49;32;1m 控制列表 \033[0m “
echo -e “\033[49;32;1m(0) 退出脚本 \033[0m “
echo “————————————————————”
echo -en “\033[49;31;1m 请输入数字 0 -7:  \033[0m”
read num
if [[“${num}” =~ “^$” ]];
then
echo -e “\033[49;31;5m 请输入 0 - 7 中的数字! 或者 Ctrl+ C 退出! \033[0m”
else
if [[“${num}” =~ “^[a-zA-Z]+$” ]];
then
echo -e “\033[49;31;5m 请输入 0 - 7 中的数字! 或者 Ctrl+ C 退出! \033[0m”
else
#if [${num} -lt 0 -o ${num} -gt 7 ]
if [[“${num}” =~ “[8-9]” ]];
then
echo -e “\033[49;31;5m 请输入 0 - 7 中的数字! 或者 Ctrl+ C 退出! \033[0m”
else
if [“${num}” == “1” ]
then
service iptables restart&
else
if [“${num}” == “2” ]
#######################################################
then
while [“1” == “1”]
do
clear
echo “———————-add ACL———————”
echo -e “\033[49;32;1m(1) 针对源 \033[49;35;1mIP\033[49;32;1m 放行添加 \033[0m “
echo -e “\033[49;32;1m(2) 针对服务器 \033[49;35;1m 端口 \033[49;32;1m 放行添加 \033[0m “
echo -e “\033[49;32;1m(3) 针对有 \033[49;35;1mIP 和端口 \033[49;32;1m 的规则添加 \033[49;35;1m(这里要参数 IP 和端口 例如:1.1.1.1/255.255.0.0 80)\033[0m “
echo -e “\033[49;32;1m(4) 自定义完整语句添加 \033[0m “
echo -e “\033[49;32;1m(0) 返回上一级 \033[0m “
echo “——————————————————————”
echo -en “\033[49;31;1m 请输入数字 0 -4: \033[0m”
read aclnum
if [[“${aclnum}” =~ “^$” ]];
then
echo -e “\033[49;31;5m 请输入 0 - 4 中的数字! 或者 Ctrl+ C 退出! \033[0m”
else
if [[“${aclnum}” =~ “^[a-zA-Z]+$” ]];
then
echo -e “\033[49;31;5m 请输入 0 - 4 中的数字! 或者 Ctrl+ C 退出! \033[0m”
else
if [[“${aclnum}” =~ “[5-9]” ]];
then
echo -e “\033[49;31;5m 请输入 0 - 4 中的数字! 或者 Ctrl+ C 退出! \033[0m”
elif [“${aclnum}” == “1” ]
then
read ip
iptables -A INPUT -s ${ip} -p tcp -j ACCEPT
service iptables save
elif [“${aclnum}” == “2” ]
then
read port
iptables -A INPUT -p tcp -s 0/0 –dport ${port} -j ACCEPT
service iptables save
elif [“${aclnum}” == “3” ]
then
read ip port
iptables -A INPUT -p tcp -s ${ip} –dport ${port} -j ACCEPT
service iptables save
elif [“${aclnum}” == “4” ]
then
read addacl
`${addacl}`
service iptables save
else
break
fi
fi
fi
echo -n “ 是否想继续添加, 回车或 Y 继续,按 N 返回上一级!: [y/n]:”
read contine
if [“${contine}” == “n” -o “${contine}” == “N” ]
then
break
fi
done
#######################################################
else
if [“${num}” == “3” ]
then
while [“1” == “1”]
do
clear
echo “———————delete ACL———————-“
echo -e “\033[49;32;1m(1) 针对源 \033[49;35;1mIP\033[49;32;1m 删除 \033[0m “
echo -e “\033[49;32;1m(2) 针对服务器 \033[49;35;1m 端口 \033[49;32;1m 删除 \033[0m “
echo -e “\033[49;32;1m(3) 针对有 \033[49;35;1mIP 和端口 \033[49;32;1m 的规则删除 \033[49;35;1m(这里要参数 IP 和端口 例如:1.1.1.1/255.255.0.0 80)\033[0m “
echo -e “\033[49;32;1m(4) 自定义完整语句删除 \033[0m “
echo -e “\033[49;32;1m(0) 返回上一级 \033[0m “
echo “————————————————-“
echo -en “\033[49;31;1m 请输入数字 0 -4: \033[0m”
read aclnum
if [[“${aclnum}” =~ “^$” ]];
then
echo -e “\033[49;31;5m 请输入 0 - 4 中的数字! 或者 Ctrl+ C 退出! \033[0m”
else
if [[“${aclnum}” =~ “^[a-zA-Z]+$” ]];
then
echo -e “\033[49;31;5m 请输入 0 - 4 中的数字! 或者 Ctrl+ C 退出! \033[0m”
else
if [[“${aclnum}” =~ “[5-9]” ]];
then
echo -e “\033[49;31;5m 请输入 0 - 4 中的数字! 或者 Ctrl+ C 退出! \033[0m”
elif [“${aclnum}” == “1” ]
then
read ip
iptables -D INPUT -s ${ip} -p tcp  -j ACCEPT
service iptables save
elif [“${aclnum}” == “2” ]
then
read port
iptables -D INPUT -p tcp -s 0/0 –dport ${port} -j ACCEPT
service iptables save
elif [“${aclnum}” == “3” ]
then
read ip port
iptables -D INPUT -p tcp -s ${ip} –dport ${port} -j ACCEPT
service iptables save
elif [“${aclnum}” == “4” ]
then
read deleteacl
`${deleteacl}`
service iptables save
else
break
fi
fi
fi
echo -n “ 是否想继续删除, 回车或 Y 继续,按 N 返回上一级!: [y/n]:”
read contine
if [“${contine}” == “n” -o “${contine}” == “N” ]
then
break
fi
done
###################################################################
else
if [“${num}” == “4” ]
then
echo -e “`service iptables stop&` “
else
if [“${num}” == “5” ]
then
echo -e “`service iptables save&`”
else
if [“${num}” == “6” ]
then
echo -e “`service iptables status&`”
else
##################################################################
if [“${num}” == “7” ]
then
while [“1” == “1”]
do
clear
echo “———————list ACL———————-“
echo -e “\033[49;32;1m(1) 看当前正在使用的规则集 \033[0m “
echo -e “\033[49;32;1m(2) 查看每个策略或每条规则、每条链的简单流量统计 \033[0m “
echo -e “\033[49;32;1m(3) 查看 NAT 表 \033[0m “
echo -e “\033[49;32;1m(4) 自定义查看 \033[0m “
echo -e “\033[49;32;1m(0) 退回上一级 \033[0m “
echo “————————————————-“
echo -en “\033[49;31;1m 请输入数字 0 -4: \033[0m”
read aclnum
if [[“${aclnum}” =~ “^$” ]];
then
echo -e “\033[49;31;5m 请输入 0 - 4 中的数字! 或者 Ctrl+ C 退出! \033[0m”
else
if [[“${aclnum}” =~ “^[a-zA-Z]+$” ]];
then
echo -e “\033[49;31;5m 请输入 0 - 4 中的数字! 或者 Ctrl+ C 退出! \033[0m”
else
if [[“${aclnum}” =~ “[5-9]” ]];
then
echo -e “\033[49;31;5m 请输入 0 - 4 中的数字! 或者 Ctrl+ C 退出! \033[0m”
elif [“${aclnum}” == “1” ]
then
iptables -L
elif [“${aclnum}” == “2” ]
then
iptables -L -n -v
elif [“${aclnum}” == “3” ]
then
iptables -L -t nat
elif [“${aclnum}” == “4” ]
then
read listacl
`${listacl}`
else
break
fi
fi
fi
echo -n “ 是否想继续查看, 回车或 Y 继续,按 N 返回上一级!: [y/n]:”
read contine
if [“${contine}” == “n” -o “${contine}” == “N” ]
then
break
fi
done
################################################
else
exit
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
echo -n “ 按回车或者 Y 返回上一级,按 N 退出程序![y/n]:”
read contine
if [“${contine}” == “n” -o “${contine}” == “N” ]
then
exit
fi
done

iptables 交互配置脚本【Linux 运维之道之脚本案例】

iptables 交互配置脚本【Linux 运维之道之脚本案例】

iptables 交互配置脚本【Linux 运维之道之脚本案例】iptables 交互配置脚本【Linux 运维之道之脚本案例】

推荐阅读:

iptables—包过滤(网络层)防火墙 http://www.linuxidc.com/Linux/2013-08/88423.htm

Linux 防火墙 iptables 详细教程 http://www.linuxidc.com/Linux/2013-07/87045.htm

iptables+L7+Squid 实现完善的软件防火墙 http://www.linuxidc.com/Linux/2013-05/84802.htm

iptables 的备份、恢复及防火墙脚本的基本使用 http://www.linuxidc.com/Linux/2013-08/88535.htm

Linux 下防火墙 iptables 用法规则详解 http://www.linuxidc.com/Linux/2012-08/67952.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计5398字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中