带有 Expect 脚本的 Upstart 脚本

带有 Expect 脚本的 Upstart 脚本

请给我关于期望脚本与新贵脚本相结合的建议。

我现在正在处理 3 个脚本。

脚本 A) Java 程序

   PATH: /opt/~~/manager

脚本 B) 重生脚本 A 的新贵脚本

   PATH: /etc/init/xx.conf

脚本C)健康检查程序– 推送脚本 A 将命令发送到另一台服务器中的进程并确认连接状态。由 cron 运行。

   PATH: /opt/x~x/healthcheck.sh

我想做的是

1) 每次服务器重新启动或进程终止时重新启动 Java 进程 - 这已通过脚本 B 实现。

2)通过定期运行健康检查程序(脚本C)来保持Java进程与另一台服务器中的进程之间的连接,它的作用是通过telnet向邻居服务器进程发送链接命令。

我在上面提到的“2”上一直失败,我想寻求建议。

目前我的脚本如下:

脚本 B)

description “description”

start on runlevel [2345]

stop on runlevel [!2345]

env USER=executinguser

respawn
respawn limit 2 10

script

      while [ ! "`ifconfig -s | grep eth1`" ]
      do
        sleep 5
      done

      su - ${USER} -c "source /opt/~~/.bash_profile && \
      /opt/~~/manager start | \
      tee -a  /opt/~~.log"
    end script

pre-start script

      RET=`su - ${USER} -c "source /opt/~~/.bash_profile && \
      /opt/~~/manager status > /dev/null" || echo $?`
      if [ "$RET" -eq "0" ] || [ -z "$RET" ] ; then
        su - ${USER} -c "source /opt/~~/.bash_profile && \
        /opt/~~/manager force-stop"
      fi
    end script

pre-stop script

      su - ${USER} -c "source /opt/~~/.bash_profile && \
      /opt/~~/manager r force-stop"
    end script

上面的脚本工作正常,并且进程重新生成而没有错误。

然后,为了向该脚本添加自动进程路由,我在主“脚本”部分之后添加了这一行以调用期望脚本。

/usr/bin/sh -f /etc/init/autolink.sh

并更改文件的权限以授予 exec 权限。 -rwxr-xr-x 1 root root 207 五月 14 11:25 autolink.sh

/etc/init/autolink.sh

#!/usr/bin/expect -f

puts "First test"

set CMD "link routename IPaddress Port"
set HOST "localhost"

  spawn telnet ${HOST}
  expect “`^]`"
  send \"${CMD}\n\"
  expect "000"

我也尝试过以下方法


#!/usr/bin/expect -f

puts "First test"

  spawn telnet IPaddress Port
  expect “`^]`"
  send "link routename IPaddress Port"
  expect "000"

我尝试过在脚本 B 上使用不同的路径调用期望脚本,并尝试使用不同的扩展名和 shebang 命名期望脚本,但它们都不起作用,事实上,我尝试过的选项都不会读取“puts”First test” 行或到达预期脚本的任何部分。

当我单独运行 Expect 脚本时 –# ./autolink.sh

它运行得很好,它收到“^]”,然后最后没有收到“000”,然后在发送链接命令后退出。

我也厌倦了<1>将expect脚本插入到upstart脚本中的变量中并回显该变量或<2>使用“expect –c”​​~~”或“/usr/进入脚本的expect部分宾/期望 <

我的问题是——我应该如何在shell脚本中调用一段expect脚本?应该如何使用适当的 shebang 和命令编写 Expect 脚本?

非常感谢您提前提供的帮助。

相关内容