LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 810|回复: 3

关于使用expect遇到的一个棘手问题。

[复制链接]
发表于 2009-4-22 11:50:47 | 显示全部楼层 |阅读模式
目的:SSH登程远程机器,查找一个文件中是否有类似"12,34,56"这种格式的字符。

在执行查找的时候出现如下错误:

  1. #!/bin/sh
  2. ... ...
  3. ... ...
  4. expect -f <<EOF
  5. spawn  ssh x.x.x.x
  6. ... ...
  7. ... ...
  8. send "sed 's/[0-9]\{1,2\},[0-9]\{1,2\},[0-9]\{1,2\}/aa,bb,cc/' config > config.bak \r“
  9. ... ...
  10. EOF
复制代码


执行时出错信息:


  1. [aa@itest etc]$ invalid command name "0-9"
  2.     while executing
  3. "0-9"
  4.     invoked from within
  5. "send "sed 's/[0-9]\{1,2\},[0-9]\{1,2\},[0-9]\{1,2\}/aa,bb,cc/' config > config.bak \r“
复制代码



我的理解是expect并没有把sed的整句送出,而是中途就中断并执行了,不知该如何解决此问题?谢谢!
发表于 2009-4-22 17:35:34 | 显示全部楼层
建议直接写成expect脚本,用调试模式执行,如:

#!/usr/bin/expect -d
##

或将 expect -f <<EOF 改成 expect -d <<EOF ,

然后看看详细的输出内容
回复 支持 反对

使用道具 举报

发表于 2009-4-23 17:18:34 | 显示全部楼层
Post by hjp0021;1977825
目的:SSH登程远程机器,查找一个文件中是否有类似"12,34,56"这种格式的字符。

在执行查找的时候出现如下错误:

  1. #!/bin/sh
  2. ... ...
  3. ... ...
  4. expect -f <<EOF
  5. spawn  ssh x.x.x.x
  6. ... ...
  7. ... ...
  8. send "sed 's/[0-9]\{1,2\},[0-9]\{1,2\},[0-9]\{1,2\}/aa,bb,cc/' config > config.bak \r“
  9. ... ...
  10. EOF
复制代码


执行时出错信息:


  1. [aa@itest etc]$ invalid command name "0-9"
  2.     while executing
  3. "0-9"
  4.     invoked from within
  5. "send "sed 's/[0-9]\{1,2\},[0-9]\{1,2\},[0-9]\{1,2\}/aa,bb,cc/' config > config.bak \r“
复制代码



我的理解是expect并没有把sed的整句送出,而是中途就中断并执行了,不知该如何解决此问题?谢谢!

在send命令中把一对双引号改成成对的花括号试试。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-24 11:55:08 | 显示全部楼层
谢谢LS二位。
将send的冒号修改为"{... ...}"后就正常了,CU的回复说"{"才是正确的语法格式。
回复 支持 反对

使用道具 举报

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

本版积分规则

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