找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 16313|回复: 0

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

[复制链接]
发表于 2022-10-13 15:44:05 | 显示全部楼层 |阅读模式
本帖最后由 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技术 +2 收起 理由
hlzj88 + 1 感谢分享
Batcher + 1 感谢分享

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 13:12 , Processed in 0.016108 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表