之前我在写shell脚本中嵌套expect遇到了这样的问题,最后经过研究发现,在expect中的shell命令是需要转换才能生效的。否知错误百出,让人吐血不已。下面我讲解下我所遇到的问题。


    我要实现通过ping检测存活主机。如果存活将这个IP存入root/uphost.txt 这个文件中。并且用expect免输密码登录存活主机。登录存活主机后,检测这个主机上的80是否开启,如果没有开启就开启80。    如果主机不存活。就将这个主机ip存在/root/downhost.txt。  

    现在的问题出在send "netstat -anptl|grep 80 && a=0 || a=1 ; if [ \$a -eq 1 ] ; then /etc/init.d/httpd start ; fi\r"  这个地方。他一直报错我怀疑是转义问题但是,一直没解决。



我的脚本

#!/bin/bash
for i in `seq 121 122`
  do
   ping -c 3 -i 0.2 -w 3 192.168.1.$i