免费注册 查看新帖 |

Chinaunix

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

[文本处理] expect脚本带来的结果异常问题(自己已经考虑了好久,没有解决,谢谢大家) [复制链接]

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-09-07 06:20:00程序设计版块每日发帖之星
日期:2015-09-07 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-09-03 19:52 |只看该作者 |倒序浏览
本帖最后由 zy86416779 于 2015-09-03 19:52 编辑
  1. #!/bin/bash

  2. ECHO=/usr/bin/echo
  3. HOSTNAME=/usr/bin/hostname
  4. SNOOP=/usr/sbin/snoop
  5. SLEEP=/usr/bin/sleep
  6. SVCS=/usr/bin/svcs
  7. GREP=/usr/bin/grep
  8. AWK=/usr/bin/awk

  9. ####_HOSTS={inf1,inf2,mas1,mate1} [I do not know why this way does not work]

  10. _HOSTNAME=`$HOSTNAME`
  11. _DOMAINNAME=`$ECHO ${_HOSTNAME:0:4}`

  12. ####_SNOOP="$SNOOP port 5140 10.40.115.131 >> /var/tmp/$_DOMAINNAME$i_snoop &"

  13. _SLEEP="$SLEEP 5"
  14. _SERVICE="_STATUS=\`svcs -a | grep cmcc |cut -d ' ' -f 1 \`"
  15. _TELLSTATUS="$ECHO \$_STATUS"

  16. for i in inf1
  17. do
  18.     $ECHO "spawn telnet $_DOMAINNAME$i" > /var/tmp/snoop_$_DOMAINNAME$i
  19.     $ECHO "expect \"login\"" >> /var/tmp/snoop_$_DOMAINNAME$i
  20.     $ECHO "send  \""root'\\r"' >> /var/tmp/snoop_$_DOMAINNAME$i
  21.     $ECHO "expect \"password\"" >> /var/tmp/snoop_$_DOMAINNAME$i
  22.     $ECHO "send  \""shroot'\\r"' >> /var/tmp/snoop_$_DOMAINNAME$i

  23. ####$ECHO "interact" >> /var/tmp/snoop_$_DOMAINNAME$i

  24.     $ECHO "expect \"#\"" >> /var/tmp/snoop_$_DOMAINNAME$i
  25.     $ECHO "send  \""bash'\\r"' >> /var/tmp/snoop_$_DOMAINNAME$i

  26. ####$ECHO "send  \""hostname'\\r"' >> /var/tmp/snoop_$_DOMAINNAME$i
  27. ####$ECHO "send  \""$_SNOOP'\\r"' >> /var/tmp/snoop_$_DOMAINNAME$i

  28.     $ECHO "expect \"#\"" >> /var/tmp/snoop_$_DOMAINNAME$i
  29.     $ECHO "send  \""$_SLEEP'\\r"' >> /var/tmp/snoop_$_DOMAINNAME$i
  30.     $ECHO "expect \"#\"" >> /var/tmp/snoop_$_DOMAINNAME$i
  31.     $ECHO "send  \""$_SERVICE'\\r"' >> /var/tmp/snoop_$_DOMAINNAME$i
  32.     $ECHO "expect \"#\"" >> /var/tmp/snoop_$_DOMAINNAME$i
  33.     $ECHO "send  \""$_TELLSTATUS'\\r"' >> /var/tmp/snoop_$_DOMAINNAME$i
  34.     $ECHO "expect eof" >> /var/tmp/snoop_$_DOMAINNAME$i
  35.     /usr/local/bin/expect /var/tmp/snoop_$_DOMAINNAME$i

  36. ####$ECHO "send \"shroot\r\"" >> /var/tmp/snoop_$_DOMAINNAME$i [this expression shows the really unexpected result and still do not know the exact reason]

  37. done
  38. [root@szl0mws1:/JUMP/henry]#./c.sh
  39. ./c.sh: line 1: [root@szl0mws1:/JUMP/henry]#cat: No such file or directory
  40. spawn telnet szl0inf1
  41. Trying 100.93.248.164...
  42. Connected to szl0inf1.szl0.jscm.com.
  43. Escape character is '^]'.
  44. login: root
  45. Password:
  46. Last login: Thu Sep  3 19:40:13 from szl0mws1.szl0.j
  47. Oracle Corporation      SunOS 5.10      Generic Patch   January 2005
  48. You have new mail.
  49. # bash
  50. [u]bash-3.2# /usr/bin/sleep 5
  51. bash-3.2# _STATUS=`svcs -a | grep cmcc |cut -d ' ' -f 1 `
  52. bash-3.2# can't read "_STATUS": no such variable
  53.     while executing
  54. "send  "/usr/bin/echo $_STATUS\r""
  55.     (file "/var/tmp/snoop_szl0inf1" line 13)[/u]
复制代码
我想请问一下 为什么会出现没有响应变量的报错呢?我自己考虑了好久 也没有找到答案 希望大家可以帮我看看

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-09-07 06:20:00程序设计版块每日发帖之星
日期:2015-09-07 06:20:00
2 [报告]
发表于 2015-09-04 07:26 |只看该作者
大神们 请帮小弟看看啊 谢谢了

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
3 [报告]
发表于 2015-09-04 12:40 |只看该作者
file c.sh

论坛徽章:
16
CU十二周年纪念徽章
日期:2013-10-24 15:41:3415-16赛季CBA联赛之广东
日期:2015-12-23 21:21:55青铜圣斗士
日期:2015-12-05 10:35:30黄金圣斗士
日期:2015-11-26 20:42:16神斗士
日期:2015-11-19 12:47:50每日论坛发贴之星
日期:2015-11-18 06:20:00程序设计版块每日发帖之星
日期:2015-11-18 06:20:002015亚冠之城南
日期:2015-11-10 19:10:492015亚冠之萨济拖拉机
日期:2015-10-28 18:47:282015亚冠之柏太阳神
日期:2015-08-30 17:21:492015亚冠之山东鲁能
日期:2015-07-07 18:48:39摩羯座
日期:2014-08-29 23:01:42
4 [报告]
发表于 2015-09-04 17:16 |只看该作者
回复 1# zy86416779
  1. _SERVICE="set _STATUS \`svcs -a | grep cmcc |cut -d ' ' -f 1 \`"
复制代码
_SERVICE 这行 改为上面的试一试

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-09-07 06:20:00程序设计版块每日发帖之星
日期:2015-09-07 06:20:00
5 [报告]
发表于 2015-09-04 19:49 |只看该作者
回复 4# tc1989tc
  1. # cat b.sh
  2. #!/bin/bash

  3. ECHO=/usr/bin/echo
  4. HOSTNAME=/usr/bin/hostname
  5. SNOOP=/usr/sbin/snoop
  6. SLEEP=/usr/bin/sleep
  7. SVCS=/usr/bin/svcs
  8. GREP=/usr/bin/grep
  9. AWK=/usr/bin/awk

  10. ####_HOSTS={inf1,inf2,mas1,mate1} [I do not know why this way does not work]

  11. _HOSTNAME=`$HOSTNAME`
  12. _DOMAINNAME=`$ECHO ${_HOSTNAME:0:4}`

  13. ####_SNOOP="$SNOOP port 5140 10.40.115.131 >> /var/tmp/$_DOMAINNAME$i_snoop &"

  14. _SLEEP="$SLEEP 5"
  15. ####_SERVICE="_STATUS=\`svcs -a | grep cmcc |cut -d ' ' -f 1 \`"
  16. _SERVICE="set _STATUS \`svcs -a | grep cmcc |cut -d ' ' -f 1 \`"
  17. _TELLSTATUS="$ECHO \$_STATUS"

  18. for i in inf1
  19. do
  20.     $ECHO "spawn telnet $_DOMAINNAME$i" > /var/tmp/snoop_$_DOMAINNAME$i
  21.     $ECHO "expect \"login\"" >> /var/tmp/snoop_$_DOMAINNAME$i
  22.     $ECHO "send  \""root'\\r"' >> /var/tmp/snoop_$_DOMAINNAME$i
  23.     $ECHO "expect \"password\"" >> /var/tmp/snoop_$_DOMAINNAME$i
  24.     $ECHO "send  \""shroot'\\r"' >> /var/tmp/snoop_$_DOMAINNAME$i

  25. ####$ECHO "interact" >> /var/tmp/snoop_$_DOMAINNAME$i

  26.     $ECHO "expect \"#\"" >> /var/tmp/snoop_$_DOMAINNAME$i
  27.     $ECHO "send  \""bash'\\r"' >> /var/tmp/snoop_$_DOMAINNAME$i

  28. ####$ECHO "send  \""hostname'\\r"' >> /var/tmp/snoop_$_DOMAINNAME$i
  29. ####$ECHO "send  \""$_SNOOP'\\r"' >> /var/tmp/snoop_$_DOMAINNAME$i

  30.     $ECHO "expect \"#\"" >> /var/tmp/snoop_$_DOMAINNAME$i
  31.     $ECHO "send  \""$_SLEEP'\\r"' >> /var/tmp/snoop_$_DOMAINNAME$i
  32.     $ECHO "expect \"#\"" >> /var/tmp/snoop_$_DOMAINNAME$i
  33.     $ECHO "send  \""$_SERVICE'\\r"' >> /var/tmp/snoop_$_DOMAINNAME$i
  34.     $ECHO "expect \"#\"" >> /var/tmp/snoop_$_DOMAINNAME$i
  35.     $ECHO "send  \""$_TELLSTATUS'\\r"' >> /var/tmp/snoop_$_DOMAINNAME$i
  36.     $ECHO "expect eof" >> /var/tmp/snoop_$_DOMAINNAME$i
  37.     /usr/local/bin/expect /var/tmp/snoop_$_DOMAINNAME$i

  38. ####$ECHO "send \"shroot\r\"" >> /var/tmp/snoop_$_DOMAINNAME$i [this expression shows the really unexpected result and still do not know the exact reason]

  39. done

  40. # ./b.sh
  41. spawn telnet szl0inf1
  42. Trying 100.93.248.164...
  43. Connected to szl0inf1.szl0.jscm.com.
  44. Escape character is '^]'.
  45. login: root
  46. Password:
  47. Last login: Fri Sep  4 07:34:47 from szl0mws1.szl0.j
  48. Oracle Corporation      SunOS 5.10      Generic Patch   January 2005
  49. You have new mail.
  50. # bash
  51. bash-3.2# /usr/bin/sleep 5
  52. bash-3.2# set _STATUS `svcs -a | grep cmcc |cut -d ' ' -f 1 `
  53. bash-3.2# can't read "_STATUS": no such variable
  54.     while executing
  55. "send  "/usr/bin/echo $_STATUS\r""
  56.     (file "/var/tmp/snoop_szl0inf1" line 13)
复制代码
我试了一下,还是不行,真的搞不清楚为什么不识别变量!
   

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-09-07 06:20:00程序设计版块每日发帖之星
日期:2015-09-07 06:20:00
6 [报告]
发表于 2015-09-04 19:52 |只看该作者
回复 3# waker
  1. # file b.sh
  2. b.sh:           executable /bin/bash script
复制代码
waker,之前看过你发的关于expect的帖子,知道你在这个方面很有水平。我也按照tc1989tc提供的方法尝试了下,还是无法识别变量。不知你是如何看这个问题呢?
   

论坛徽章:
16
CU十二周年纪念徽章
日期:2013-10-24 15:41:3415-16赛季CBA联赛之广东
日期:2015-12-23 21:21:55青铜圣斗士
日期:2015-12-05 10:35:30黄金圣斗士
日期:2015-11-26 20:42:16神斗士
日期:2015-11-19 12:47:50每日论坛发贴之星
日期:2015-11-18 06:20:00程序设计版块每日发帖之星
日期:2015-11-18 06:20:002015亚冠之城南
日期:2015-11-10 19:10:492015亚冠之萨济拖拉机
日期:2015-10-28 18:47:282015亚冠之柏太阳神
日期:2015-08-30 17:21:492015亚冠之山东鲁能
日期:2015-07-07 18:48:39摩羯座
日期:2014-08-29 23:01:42
7 [报告]
发表于 2015-09-04 21:25 |只看该作者
_TELLSTATUS="$ECHO \\\$_STATUS"

在你原来的基础上面改为这样试一试啊。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-09-07 06:20:00程序设计版块每日发帖之星
日期:2015-09-07 06:20:00
8 [报告]
发表于 2015-09-05 07:08 |只看该作者
回复 7# tc1989tc
为什么要在转义字符前面再加两个呢?

   

论坛徽章:
16
CU十二周年纪念徽章
日期:2013-10-24 15:41:3415-16赛季CBA联赛之广东
日期:2015-12-23 21:21:55青铜圣斗士
日期:2015-12-05 10:35:30黄金圣斗士
日期:2015-11-26 20:42:16神斗士
日期:2015-11-19 12:47:50每日论坛发贴之星
日期:2015-11-18 06:20:00程序设计版块每日发帖之星
日期:2015-11-18 06:20:002015亚冠之城南
日期:2015-11-10 19:10:492015亚冠之萨济拖拉机
日期:2015-10-28 18:47:282015亚冠之柏太阳神
日期:2015-08-30 17:21:492015亚冠之山东鲁能
日期:2015-07-07 18:48:39摩羯座
日期:2014-08-29 23:01:42
9 [报告]
发表于 2015-09-05 10:06 |只看该作者

先看看行不嘛

论坛徽章:
16
CU十二周年纪念徽章
日期:2013-10-24 15:41:3415-16赛季CBA联赛之广东
日期:2015-12-23 21:21:55青铜圣斗士
日期:2015-12-05 10:35:30黄金圣斗士
日期:2015-11-26 20:42:16神斗士
日期:2015-11-19 12:47:50每日论坛发贴之星
日期:2015-11-18 06:20:00程序设计版块每日发帖之星
日期:2015-11-18 06:20:002015亚冠之城南
日期:2015-11-10 19:10:492015亚冠之萨济拖拉机
日期:2015-10-28 18:47:282015亚冠之柏太阳神
日期:2015-08-30 17:21:492015亚冠之山东鲁能
日期:2015-07-07 18:48:39摩羯座
日期:2014-08-29 23:01:42
10 [报告]
发表于 2015-09-05 10:06 |只看该作者

先看看行不嘛
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP