Script não retorna quando executado via SSH

0

Eu estou chamando um script via cliente ssh assim:

ssh root@host "su - oracle -c '~/bin/weblogic start'"

O ~/bin/weblogic é um script bash que realmente inicia o servidor da Web em segundo plano e lê e exibe seu log até que determinado padrão seja encontrado ('Estado do servidor alterado para RUNNING') no ponto em que ele sai. Quando eu o chamo do local remoto, ele trava depois que o último comando bash é executado. Tenho certeza de que tem algo a ver com o que é explicado em SO ( link ), no entanto não consigo iniciar o script weblogic bash em segundo plano - devo esperar que ele termine e obtenha seu código de saída junto com o stdout regular até o padrão específico.

O código bash é assim:

   function start_server {
        ~/bin/weblogic.py
        echo 'Python script finished'
        exit 1
   }

   ....
   start_server

A saída é

... server output ...
...
... Server state changed to RUNNING ....
Python script finished

Como posso fazer o retorno do cliente SSH? Estou executando isso no Solaris 11.3.

    
por majkinetor 27.06.2016 / 23:53

1 resposta

2

exit 1 sinaliza uma condição de erro. Para um script como esse, você não deve incluir um exit .

Tente esta função. Você pode fornecer o host e a porta na linha de comandos para startManagedWeblogic.shm ou exportar as variáveis antes de iniciar o servidor. Se você ler o script startManagedWebLogic.sh, deverá encontrar uma variável que possa exportar antes de executar o script para redirecionar a saída, em vez do método que usei. Você poderia fazer o mesmo no seu script python.

Os scripts de início do WebLogic são executados até o servidor ter parado. Você desejará efetuar o registro em segundo plano da saída em um arquivo e rejeitar o servidor. (Considere usar o nodeManager para iniciar o servidor). Em seguida, siga o arquivo até que ele seja executado.

function start_server {
    ~/bin/startManagedWeblogic.sh HOSTNAME PORT &> weblogic.out &
    disown
    ~/bin/tailUntilRunning.py weblogic.out
    echo 'Shell script finished'

}

Existem funções do WLST que você pode usar para iniciar o servidor, embora você precise usar o wlst.sh como o interpretador do seu script python (Jython 2.1).

    
por 28.06.2016 / 01:12

Tags