1. #!/bin/bash
  2. while true
  3. do
  4. clear
  5. echo "———————-menu————————"
  6. echo -e "\033[49;32;1m(1) 重启\033[49;35;1miptables\033[0m "
  7. echo -e "\033[49;32;1m(2) 添加\033[49;35;1miptables\033[49;32;1m规则\033[0m "
  8. echo -e "\033[49;32;1m(3) 删除\033[49;35;1miptables\033[49;32;1m规则\033[0m "
  9. echo -e "\033[49;32;1m(4) 关闭\033[49;35;1miptables\033[0m "
  10. echo -e "\033[49;32;1m(5) 保存\033[49;35;1miptables\033[49;32;1m规则(输完ACL后要记得保存和查看)\033[0m "
  11. echo -e "\033[49;32;1m(6) 查看\033[49;35;1miptables\033[49;32;1m状态\033[0m "
  12. echo -e "\033[49;32;1m(7) 添加\033[49;35;1miptables\033[49;32;1m控制列表\033[0m "
  13. echo -e "\033[49;32;1m(0) 退出脚本\033[0m "
  14. echo "————————————————————"
  15. echo -en "\033[49;31;1m 请输入数字0-7: \033[0m"
  16. read num
  17. if [[ "${num}" =~ "^$" ]];
  18. then
  19. echo -e "\033[49;31;5m 请输入0-7中的数字!或者Ctrl+C退出! \033[0m"
  20. else
  21. if [[ "${num}" =~ "^[a-zA-Z]+$" ]];
  22. then
  23. echo -e "\033[49;31;5m 请输入0-7中的数字!或者Ctrl+C退出! \033[0m"
  24. else
  25. #if [ ${num} -lt 0 -o ${num} -gt 7 ]
  26. if [[ "${num}" =~ "[8-9]" ]];
  27. then
  28. echo -e "\033[49;31;5m 请输入0-7中的数字!或者Ctrl+C退出! \033[0m"
  29. else
  30. if [ "${num}" == "" ]
  31. then
  32. service iptables restart&
  33. else
  34. if [ "${num}" == "" ]
  35. #######################################################
  36. then
  37. while true
  38. do
  39. clear
  40. echo "———————-add ACL———————"
  41. echo -e "\033[49;32;1m(1) 针对源\033[49;35;1mIP\033[49;32;1m放行添加\033[0m "
  42. echo -e "\033[49;32;1m(2) 针对服务器\033[49;35;1m端口\033[49;32;1m放行添加 \033[0m "
  43. 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 "
  44. echo -e "\033[49;32;1m(4) 自定义完整语句添加 \033[0m "
  45. echo -e "\033[49;32;1m(0) 返回上一级 \033[0m "
  46. echo "——————————————————————"
  47. echo -en "\033[49;31;1m 请输入数字0-4: \033[0m"
  48. read aclnum
  49. if [[ "${aclnum}" =~ "^$" ]];
  50. then
  51. echo -e "\033[49;31;5m 请输入0-4中的数字!或者Ctrl+C退出! \033[0m"
  52. else
  53. if [[ "${aclnum}" =~ "^[a-zA-Z]+$" ]];
  54. then
  55. echo -e "\033[49;31;5m 请输入0-4中的数字!或者Ctrl+C退出! \033[0m"
  56. else
  57. if [[ "${aclnum}" =~ "[5-9]" ]];
  58. then
  59. echo -e "\033[49;31;5m 请输入0-4中的数字!或者Ctrl+C退出! \033[0m"
  60. elif [ "${aclnum}" == "" ]
  61. then
  62. read ip
  63. iptables -A INPUT -s ${ip} -p tcp -j ACCEPT
  64. service iptables save
  65. elif [ "${aclnum}" == "" ]
  66. then
  67. read port
  68. iptables -A INPUT -p tcp -s / --dport ${port} -j ACCEPT
  69. service iptables save
  70. elif [ "${aclnum}" == "" ]
  71. then
  72. read ip port
  73. iptables -A INPUT -p tcp -s ${ip} --dport ${port} -j ACCEPT
  74. service iptables save
  75. elif [ "${aclnum}" == "" ]
  76. then
  77. read addacl
  78. `${addacl}`
  79. service iptables save
  80. else
  81. break
  82. fi
  83. fi
  84. fi
  85. echo -n "是否想继续添加,回车或Y继续,按N返回上一级!: [y/n]:"
  86. read contine
  87. if [ "${contine}" == "n" -o "${contine}" == "N" ]
  88. then
  89. break
  90. fi
  91. done
  92. #######################################################
  93. else
  94. if [ "${num}" == "" ]
  95. then
  96. while true
  97. do
  98. clear
  99. echo "———————delete ACL———————-"
  100. echo -e "\033[49;32;1m(1) 针对源\033[49;35;1mIP\033[49;32;1m删除\033[0m "
  101. echo -e "\033[49;32;1m(2) 针对服务器\033[49;35;1m端口\033[49;32;1m删除 \033[0m "
  102. 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 "
  103. echo -e "\033[49;32;1m(4) 自定义完整语句删除 \033[0m "
  104. echo -e "\033[49;32;1m(0) 返回上一级 \033[0m "
  105. echo "————————————————-"
  106. echo -en "\033[49;31;1m 请输入数字0-4: \033[0m"
  107. read aclnum
  108. if [[ "${aclnum}" =~ "^$" ]];
  109. then
  110. echo -e "\033[49;31;5m 请输入0-4中的数字!或者Ctrl+C退出! \033[0m"
  111. else
  112. if [[ "${aclnum}" =~ "^[a-zA-Z]+$" ]];
  113. then
  114. echo -e "\033[49;31;5m 请输入0-4中的数字!或者Ctrl+C退出! \033[0m"
  115. else
  116. if [[ "${aclnum}" =~ "[5-9]" ]];
  117. then
  118. echo -e "\033[49;31;5m 请输入0-4中的数字!或者Ctrl+C退出! \033[0m"
  119. elif [ "${aclnum}" == "" ]
  120. then
  121. read ip
  122. iptables -D INPUT -s ${ip} -p tcp -j ACCEPT
  123. service iptables save
  124. elif [ "${aclnum}" == "" ]
  125. then
  126. read port
  127. iptables -D INPUT -p tcp -s / --dport ${port} -j ACCEPT
  128. service iptables save
  129. elif [ "${aclnum}" == "" ]
  130. then
  131. read ip port
  132. iptables -D INPUT -p tcp -s ${ip} --dport ${port} -j ACCEPT
  133. service iptables save
  134. elif [ "${aclnum}" == "" ]
  135. then
  136. read deleteacl
  137. `${deleteacl}`
  138. service iptables save
  139. else
  140. break
  141. fi
  142. fi
  143. fi
  144. echo -n "是否想继续删除,回车或Y继续,按N返回上一级!: [y/n]:"
  145. read contine
  146. if [ "${contine}" == "n" -o "${contine}" == "N" ]
  147. then
  148. break
  149. fi
  150. done
  151. ###################################################################
  152. else
  153. if [ "${num}" == "" ]
  154. then
  155. echo -e "`service iptables stop&` "
  156. else
  157. if [ "${num}" == "" ]
  158. then
  159. echo -e "`service iptables save&`"
  160. else
  161. if [ "${num}" == "" ]
  162. then
  163. echo -e "`service iptables status&`"
  164. else
  165. ##################################################################
  166. if [ "${num}" == "" ]
  167. then
  168. while true
  169. do
  170. clear
  171. echo "———————list ACL———————-"
  172. echo -e "\033[49;32;1m(1) 看当前正在使用的规则集 \033[0m "
  173. echo -e "\033[49;32;1m(2) 查看每个策略或每条规则、每条链的简单流量统计\033[0m "
  174. echo -e "\033[49;32;1m(3) 查看NAT表 \033[0m "
  175. echo -e "\033[49;32;1m(4) 自定义查看 \033[0m "
  176. echo -e "\033[49;32;1m(0) 退回上一级\033[0m "
  177. echo "————————————————-"
  178. echo -en "\033[49;31;1m 请输入数字0-4: \033[0m"
  179. read aclnum
  180. if [[ "${aclnum}" =~ "^$" ]];
  181. then
  182. echo -e "\033[49;31;5m 请输入0-4中的数字!或者Ctrl+C退出! \033[0m"
  183. else
  184. if [[ "${aclnum}" =~ "^[a-zA-Z]+$" ]];
  185. then
  186. echo -e "\033[49;31;5m 请输入0-4中的数字!或者Ctrl+C退出! \033[0m"
  187. else
  188. if [[ "${aclnum}" =~ "[5-9]" ]];
  189. then
  190. echo -e "\033[49;31;5m 请输入0-4中的数字!或者Ctrl+C退出! \033[0m"
  191. elif [ "${aclnum}" == "" ]
  192. then
  193. iptables -L
  194. elif [ "${aclnum}" == "" ]
  195. then
  196. iptables -L -n -v
  197. elif [ "${aclnum}" == "" ]
  198. then
  199. iptables -L -t nat
  200. elif [ "${aclnum}" == "" ]
  201. then
  202. read listacl
  203. `${listacl}`
  204. else
  205. break
  206. fi
  207. fi
  208. fi
  209. echo -n "是否想继续查看,回车或Y继续,按N返回上一级!: [y/n]:"
  210. read contine
  211. if [ "${contine}" == "n" -o "${contine}" == "N" ]
  212. then
  213. break
  214. fi
  215. done
  216. ################################################
  217. else
  218. exit
  219. fi
  220. fi
  221. fi
  222. fi
  223. fi
  224. fi
  225. fi
  226. fi
  227. fi
  228. fi
  229. echo -n "按回车或者Y返回上一级,按N退出程序![y/n]:"
  230. read contine
  231. if [ "${contine}" == "n" -o "${contine}" == "N" ]
  232. then
  233. exit
  234. fi
  235. done

iptables交互配置shell脚本的更多相关文章

  1. linux - 怎么自动填写有交互的shell脚本 - SegmentFault

    linux - 怎么自动填写有交互的shell脚本 - SegmentFault TCL/Expect交互式自动化测试概要 - - ITeye技术网站 expect是一种基于TCL,能与交互式程序进行 ...

  2. dns自动配置shell脚本

    代码: #!/bin/bash #获取url echo "url:" read url #获取ip echo "ip:" read ip #向/etc/name ...

  3. 使用 shell 脚本配置 iOS 工程

      APP开发过程中,往往需要在多个网络环境或配置中进行切换,以获取不同配置的APP,甚至有时需要用一套代码经过简单的配置生成不同的APP.而手动配置费时费力,且容易出错.这里介绍用脚本工具,去生成不 ...

  4. shell脚本多进程

    shell脚本再执行过程中就一个进程,从头到尾 下面配置shell脚本执行过程中启动多个进程同时执行 #!/bin/bash for ((i=1;i<=10;i++)) do ( echo &q ...

  5. [PY3]——环境配置(1)——pyenv | pip | ipython | jupyter(含安装pyenv环境shell脚本)

    1.关于pyenv (1)pyenv是一个开源的.shell脚本编写的工具:Simple Python version management (2)为什么使用pyenv:当多个项目同时在开发与维护时, ...

  6. CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动

    CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动1.关于mysql?MySQL是一个关系型数据库管理 ...

  7. shell脚本交互:expect学习笔记及实例详解

    最近项目需求,需要写一些shell脚本交互,管道不够用时,expect可以很好的实现脚本之间交互,搜索资料,发现网上好多文章都是转载的,觉得这篇文章还不错,所以简单修改之后拿过来和大家分享一下~ 1. ...

  8. springboot打包不同环境配置与shell脚本部署

    本篇和大家分享的是springboot打包并结合shell脚本命令部署,重点在分享一个shell程序启动工具,希望能便利工作: profiles指定不同环境的配置 maven-assembly-plu ...

  9. Shell脚本交互之:自动输入密码

    Shell脚本交互之:自动输入密码 2016年04月09日 19:41:26 zhangjikuan 阅读数:58208 标签: Shell交互自动输入密码expect重定向管道 更多 个人分类: A ...

随机推荐

  1. 字典树(Trie Tree)

    在图示中,键标注在节点中,值标注在节点之下.每一个完整的英文单词对应一个特定的整数.Trie 可以看作是一个确定有限状态自动机,尽管边上的符号一般是隐含在分支的顺序中的.键不需要被显式地保存在节点中. ...

  2. mysql入门教程

    mysql相信大家都非常熟悉,but读音你们都读对了么?MySQL [maɪ ˌɛskjuːˈɛl] [maɪ ˈsiːkwəl] 念 买S奎儿 或 买吸扣 都可以,还有好多容易读错的名词,详情请见I ...

  3. 读取文件内容fopen,fgets,fclose

    <?php //首先采用“fopen”函数打开文件,得到返回值的就是资源类型.$file_handle = fopen("/data/webroot/resource/php/f.tx ...

  4. 怎么启动或停止mysql服务

    在linux下,  启动mysql用 service mysql start   停止用 service mysql stop 在windows下, 启动用 net start mysql    停止 ...

  5. request获取请求头和请求数据

    package cn.itcast.request; import java.io.IOException; import java.io.InputStream; import java.io.Pr ...

  6. 【iCore3 双核心板】例程三十四:U_DISK_IAP_ARM实验——更新升级STM32

    实验指导书及代码包下载: http://pan.baidu.com/s/1pKabR7P iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  7. Mysql5.5命令行修改密码

    今天下载了mysql5.5.45免安装版,配置好之后发现mysql默认是没有设置密码的,也就是密码为空. 如果是本机作开发测试用,有无密码倒也无所谓,不过发布在服务器上没有密码肯定是不行的,那就需要设 ...

  8. phpcmsv9的评论分表策略

    comment_table表 comment表 comment_data_x表 我们留意到: comment_table表统计每个comment_data_x表里面有多少条记录, comment表只是 ...

  9. win7下用mklink命令解决delphiXE系列占用C盘空间的问题

    DelphiXE从2010以后, 安装程序安装完成后都会在ProgramData目录里复制一份安装程序的备份, 随着版本升级安装包越来越大, 占用C盘的空间也就越来越大 虽然可以通过删除的方式删掉, ...

  10. 【翻译】How To Tango With Django 1.5.4 第五章

    5数据模型和数据库 一个模型就是一个描述你数据表的python对象.不用再通过SQL来操作数据库,而是使用python对象来操作数据库. 5.1rango要求 ...一个目录下面有多个下面 ...一个 ...