Script Upstart com expectativa de script

1

Por favor, me dê conselhos sobre como esperar scripting combinado com um script upstart.

Existem 3 scripts com os quais estou lidando agora.

Script A) Programa Java

   PATH: /opt/~~/manager

Script B) Script para iniciar o script A

   PATH: /etc/init/xx.conf

Script C) Programa de verificação de integridade - Envia o Script A para enviar um comando para um processo em outro servidor e confirma o status da conexão. Executado pelo cron.

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

O que eu quero fazer é

1) Reinicie o processo Java toda vez que o servidor for reinicializado ou o processo morrer - Isso foi conseguido com o Script B.

2) Mantenha a conexão em espera entre o processo Java e o processo em outro servidor executando um programa de verificação de integridade (Script C) regularmente e o que ele faz é enviar um comando de link para o processo do servidor vizinho via telnet.

Eu tenho falhado com o acima mencionado "2" e gostaria de pedir conselhos.

Atualmente, meu script é o seguinte:

Script 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

O script acima funciona bem e o processo reaparece sem erros.

Em seguida, para adicionar um roteamento de processo automático a esse script, adicionei essa linha após a seção principal "script" para chamar um script de expectativa.

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

E alterei a permissão do arquivo para dar uma permissão de execução. -rwxr-xr-x 1 raiz raiz 207 14 de maio 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"

e eu também tentei o seguinte

#!/usr/bin/expect -f

puts "First test"

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

Eu tentei chamar o script expect com um caminho diferente no Script B, e tentei nomear o script expect com extensão e shebang diferentes, mas nenhum deles funcionou, na verdade, nenhuma das opções que tentei nem leriam “ coloca a linha "Primeiro teste" ou chega a qualquer parte do script esperado.

Quando executo o script de espera sozinho - # ./autolink.sh

Funciona muito bem, recebe “^]” e depois não recebe “000” no final e sai depois de enviar o comando de link.

Eu também estou cansado < 1 > inserindo o script expect em uma variável no script upstart e ecoando a variável ou < 2 > entrando na parte esperada do script com “expect –c“ ~~ ”ou“ / usr / bin / expect <

A minha pergunta é - como devo chamar um pedaço do script expect em um shell script? E como um script de expectativa deve ser escrito com um shebang e comandos apropriados?

Muito obrigado pela sua ajuda antecipadamente.

    
por AiAmAi 17.05.2018 / 13:22

0 respostas