[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] H3C防火墙ACL设置的批处理脚本

本帖最后由 ejzhang 于 2022-10-14 14:56 编辑

因为工作需要频繁开启关闭互联网终端权限,特编写了H3C防火墙ACL设置脚本方便值班人员操作。
现放出来供大家参考,防火墙为F1070,软件版本CMW 7.1.064 Release 9360P27,其他设备未测试,需开启SSH登录,脚本使用plink连接防火墙。
  1. @echo off
  2. plink -V>nul 2>&1
  3. if ERRORLEVEL 9009 (echo 未找到 plink 程序!&& pause>nul && goto end)
  4. set acl=2000
  5. set userid="admin"
  6. set passwd="admin123"
  7. set router="192.168.1.1"
  8. ping -n 1 %router%>nul 2>&1
  9. if ERRORLEVEL 1 (echo 无法访问路由器! && pause>nul && goto end)
  10. :begin
  11. if EXIST "%TEMP%\" (set rulesfile="%TEMP%\rules.h3c") else (set rulesfile="rules.h3c")
  12. type nul> %rulesfile%.tmp
  13. for /f "tokens=2-5*" %%i in ('plink -batch -l %userid% -pw %passwd% %router% "display acl %acl%" ^| findstr /rc:" *rule *[0-9][0-9]* *[\<permit\> \<deny\> \<comment\>]"') do @if "%%j"=="permit" (echo %%i: %%l ^(Yes^)) else (if "%%j"=="deny" (echo %%i: %%l ^(No^)) else (echo %%i: %%k%%l%%m))>> %rulesfile%.tmp
  14. type nul> %rulesfile%
  15. for /f "tokens=1* delims=:" %%i in ('findstr "\(Yes\)$ \(No\)$" %rulesfile%.tmp') do (
  16.     set comment=
  17.     for /f "skip=1 tokens=2*" %%x in ('findstr "^%%i:" %rulesfile%.tmp') do set comment=true && echo %%i:%%j //%%x%%y
  18.     if not defined comment echo %%i:%%j
  19. )>> %rulesfile%
  20. del /q %rulesfile%.tmp
  21. :repeat
  22. echo.
  23. echo 互联网终端开通/关闭情况(Yes:开,No:关):
  24. type %rulesfile%
  25. set /p no=请输入要开通/关闭的互联网终端编号(可用“,”分割输入多个编号,0:退出):
  26. set "tt=%time::=%"
  27. set "tt=%tt:.=%"
  28. set "tt=%tt: =0%"
  29. if EXIST "%TEMP%\" (set cmdfile="%TEMP%\inet-updown-%tt%.h3c") else (set cmdfile="inet-updown-%tt%.h3c")
  30. echo system> %cmdfile%
  31. echo acl basic %acl%>> %cmdfile%
  32. set openNodes=
  33. set closeNodes=
  34. setlocal enableDelayedExpansion
  35. :loop
  36. for /f "tokens=1* delims=, " %%i in ("%no%") do (
  37.     if %%i equ 0 goto end
  38.     set id=%%i
  39.     set no=%%j
  40.     set ip=
  41.     for /f "tokens=2" %%x in ('findstr "^%%i:" %rulesfile%') do set ip=%%x
  42.     if defined ip goto found
  43.     echo 终端编号 %%i 无效!
  44.     goto loop
  45. :found
  46.     findstr "^%id%:.*\(Yes\)" %rulesfile%>nul 2>&1 && (set closeNodes=%closeNodes%,%id%) || (set openNodes=%openNodes%,%id%)
  47.     (findstr "^%id%:.*\(Yes\)" %rulesfile%>nul 2>&1 && (echo rule %id% deny source %ip% 0) || (echo rule %id% permit source %ip% 0))>> %cmdfile%
  48. )
  49. if defined no goto loop
  50. if defined openNodes echo 正在开通 %openNodes:~1% 号互联网终端...
  51. if defined closeNodes echo 正在关闭 %closeNodes:~1% 号互联网终端...
  52. endlocal
  53. echo return>> %cmdfile%
  54. echo quit>> %cmdfile%
  55. plink -batch -l %userid% -pw %passwd% %router% -m %cmdfile%>nul 2>&1
  56. del /q %cmdfile%>nul 2>&1
  57. goto begin
  58. :end
  59. del /q %cmdfile%>nul 2>&1
  60. del /q %rulesfile%>nul 2>&1
复制代码
2

评分人数

返回列表