免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1436 | 回复: 3

[文本处理] 自动巡检中字符串获取及expect 参数传递问题请教 [复制链接]

论坛徽章:
0
发表于 2017-04-21 18:16 |显示全部楼层
近10年没用过shell了,现在想用 bash 与 expect 实现网路设备 与 部分主机的自动巡检。捡起来还是有困难的
有几个问题请教:
1、参数文件来记录所有主机相关配置,且以 # 号为注释符。对于配置中确实需要 # 符号的,前面加  \  进行转义
格式假如为   hostname1    ip1   prompt1   prompt2  passwd  explain

主机1   192.168.1.1  switch>   switch\#  123456    #注释1
#主机2  192.168.1.2  switch>   switch\#  123456   #注释2
想找到最简便的方法,对每行数据处理,想找到匹配子字符串,以 “#” 结束,且非 “\#”  。  感觉用 sed  好点

2、想传递"命令”参数给expect 函数,但参数中带空格如何编写

proc exec_cmd { cmd } {

      send  "$cmd"
      expect ......
}

但调用   exec_cmd "show   run"  出错,因刚接触 expect 不久,请各位指教
  


论坛徽章:
0
发表于 2017-04-22 06:35 |显示全部楼层
第二个很简单,用双引号标记即可;
第一个取个巧实现了,但没找到最简单的办法,继续请教

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
发表于 2017-04-22 21:12 |显示全部楼层
回复 1# luopc

How about this way ...

#注释1
主机1   192.168.1.1  switch>   switch#  123456   

#注释2
#主机2  192.168.1.2  switch>   switch#  123456   

论坛徽章:
0
发表于 2017-04-23 07:45 |显示全部楼层
回复 3# jason680

对于下面两行:
主机1   192.168.1.1  switch>   switch\#  123456    #注释1
#主机2  192.168.1.2  switch>   switch\#  123456   #注释2


第一行: 最终认为有效字符
     主机1   192.168.1.1  switch>   switch#  123456
     因为 # 号后为注释, 而 switch\# 被转义为有效字段  switch#,实际应用中有效字符存在有多个 \# 的情况

第二行: 最终认为整行为注释

我现在简单取巧的应对方式:
      1: 将 “\#” 替换成在文本中未出现过的字符串 S;
      2: 将 # 作为分隔符将有效字段 与 注释分离
      3: 将 有效字段内容中的 S 替换回 # (消除\)

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP