Capture Saída do script Python em um script bash

1

Eu tenho um script que monitora os servidores de jogos. Está escrito em bash. No entanto, estou tentando montar um monitor avançado para atender se o servidor estiver bloqueado. Isso requer um pequeno script python para consultar o servidor e retorna OK, ERROR 1 ou ERRO 2. Qual é a melhor maneira de capturar a saída? Atualmente, com o script, a variável está vazia. Eu posso confirmar que o script está funcionando bem e retornando uma mensagem.

if [ -f serverquery.py ];then
    echo -e "[\e[0;36m INFO\e[0;39m ] Running advanced monitoring serverquery.py"
    echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Running advanced monitoring serverquery.py" >> ${logfile}
    serverquery='./serverquery.py 127.0.0.1 27015'
    if [ "${serverquery}" = "ERROR 1" ];then
        echo -e "[\e[0;31m FAIL\e[0;39m ] ${servicename}: serverquery.py Monitor detected ${servername} has crashed!"
        echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: serverquery.py Monitor detected ${servername} has crashed!" >> ${logfile}
        fn_restartserver
    elif [ "${serverquery}" = "ERROR 2" ];then
        echo -e "[\e[0;31m FAIL\e[0;39m ] ${servicename}: serverquery.py Monitor detected ${servername} has crashed!"
        echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: serverquery.py Monitor detected ${servername} has crashed!" >> ${logfile}
        fn_restartserver
    fi
fi

Obrigado

    
por dgibbs 26.07.2013 / 13:44

2 respostas

2

adicionou 2 > & 1 ao final e agora está funcionando

por exemplo

serverquery=$(./serverquery.py 127.0.0.1 27015 2>&1)

    
por 26.07.2013 / 16:10
1

Se você tiver acesso para editar serverquery.py, eu alteraria o valor de saída para as condições de erro e, em seguida, simplesmente verificaria o valor de $? depois de executá-lo. Caso contrário, tente alterar sua verificação de condicional na saída para o formato sugerido por val0x00ff: if [[ "${serverquery}" == "ERROR 1" ]]; then ... fi .

    
por 26.07.2013 / 14:40