免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3700 | 回复: 5
打印 上一主题 下一主题

脚本格式化输出ipsec的内容 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-05-23 22:18 |只看该作者 |倒序浏览
本帖最后由 kevinadmin 于 2011-05-24 00:40 编辑
  1. 筛选器列表详细信息
  2. ------------------

  3. 筛选器列表名称         : testipsec
  4. 描述                   : 无
  5. 存储                   : 本地存储 <LOCALHOST>
  6. 上次修改时间           : 2011-4-20 15:43:44
  7. GUID                   : {AE62D9A0-1636-485F-A6A8-6D7C90FE0EK7}
  8. 筛选器数目             : 1
  9. 筛选器
  10. ---------
  11. 描述                   : 无
  12. 已镜像                 : 是
  13. 源 IP 地址             : <我的 IP 地址>
  14. 源掩码                 : 255.255.255.255
  15. 源 DNS 名称            : <我的 IP 地址>
  16. 目标 IP 地址           : 192.123.11.16
  17. 目标掩码               : 255.255.255.255
  18. 目标 DNS 名称          : <特定 IP 地址>
  19. 协议                   : TCP
  20. 源端口                 : 任何
  21. 目标端口               : 8080

  22. 筛选器操作详细信息
  23. ---------------------

  24. 筛选器操作名称         : allow
  25. 描述                   : 无
  26. 存储                   : 本地存储 <localhost>
  27. 操作                   : 允许
  28. AllowUnsecure(Fallback): 否
  29. 入站通过               : 否
  30. 上次修改时间           : 2011-4-20 15:42:35
  31. GUID                   : {C2EF3E73-DD82-4D76-B9FB-1E8LL92C6D62}


  32. 规则 ID                : 2,  GUID = {51CC827C-9070-4F13-82FB-8OW2C0A4E5BC}
  33. 规则名称               : TESTipsec
  34. 描述                   : 无
  35. 上次修改时间           : 2011-4-20 15:43:44
  36. 已激活                 : 是
  37. 连接类型               : 全部
  38. 身份验证方法(1)

  39.         KERBEROS
复制代码
这是IPSEC输出的一小段内容,我想把这段内容格式化输出:
例如,我执行如下命令:
./showipsec.sh testipsec

得到如下结果:

testipsec  192.123.11.16  TCP  8080

就是把这段内容格式化输出了(主要格式化输出了源IP、源掩码、协议、端口,当然IP地址可能是段,这样就要算掩码了):
  1. 描述                   : 无
  2. 已镜像                 : 是
  3. 源 IP 地址             : <我的 IP 地址>
  4. 源掩码                 : 255.255.255.255
  5. 源 DNS 名称            : <我的 IP 地址>
  6. 目标 IP 地址           : 192.123.11.16
  7. 目标掩码               : 255.255.255.255
  8. 目标 DNS 名称          : <特定 IP 地址>
  9. 协议                   : TCP
  10. 源端口                 : 任何
  11. 目标端口               : 8080
复制代码
如果有多条规则,则格式化输出多条

类似:
./showipsec.sh testipsec
testipsec  192.123.11.16  TCP  8080
testipsec  192.123.11.0/24  TCP  8080
testipsec  192.123.0.0/16  TCP  8080

这个需求应该如何实现?想了挺长时间了,木有结果。脚本能力有待加强哇,真是书到用时方恨少哇。。。。

论坛徽章:
0
2 [报告]
发表于 2011-05-23 23:31 |只看该作者
try:
  1. sed -n '/筛选器列表名称/p;/目标 IP 地址/p;/协议/p;/目标端口/p' testipsec | awk -F: '{print $NF}' | sed -rn ':a;/[0-9]{4,}/!N;/#/!s/\n/ /;ta;P;D'
复制代码

论坛徽章:
0
3 [报告]
发表于 2011-05-24 00:15 |只看该作者
本帖最后由 kevinadmin 于 2011-05-24 00:17 编辑

历害!~~~

我的需求没有说清楚 不好意思。
还要有掩码才可以,因为会有段地址
像:
testipsec  192.123.11.0/24  TCP  8080 =====> IPSEC输出的掩码不是会是24 是255.255.255.0 需要转换才可以。


我写了一个循环,实现了。

现在最关键的一点没有实现,就是如何从所有的规则里面取出对应的数据。

如果从文件中取,这个已经实现了。命令如下:
netsh ipsec static show all |sed -n '/\testipsec/,/KERBEROS/{p;/KERBEROS/{n;:a;$!N;/.*\nKERBEROS[^\n]*$/{p;n};$b;ba}}'


我现在要把testipsec 替换成 $1 来接收输入的参数值,匹配得到我想要的数据。
netsh ipsec static show all |sed -n '/\$1/,/KERBEROS/{p;/KERBEROS/{n;:a;$!N;/.*\nKERBEROS[^\n]*$/{p;n};$b;ba}}'

但是 sed的 ' ' 把$1变成了本身  不能接收输入的数据值了。关键点在这里。

能帮忙看一下吗?
TKS

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
4 [报告]
发表于 2011-05-24 03:19 |只看该作者
回复 3# kevinadmin


sed引用外部变量时需要把单引号改成双引号

论坛徽章:
0
5 [报告]
发表于 2011-05-24 12:57 |只看该作者
回复 3# kevinadmin


    以后回帖要善于用"回复"按钮!!!

    如楼上所说,改成双引号……

论坛徽章:
0
6 [报告]
发表于 2011-05-24 18:48 |只看该作者
回复 5# xiaopan3322


    嗯   好的  多谢1~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP