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:
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
#!/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.