Como capturar o resultado em um subprocesso

0

Estou trabalhando com o memcache de telnet e vou usá-lo como exemplo, mas suponho que ele possa ser estendido em outros assuntos. No shell, o processo é

telnet <ip> <port> #this start the subroutine
connected to <ip>
Escape charecter ...
flush_all #My command
OK #the response /ERROR in case it fails
quit #my command
Connection closed by foreign host.
$ echo $?
1

Eu quero receber a mensagem OK / ERROR, mas não sei como. Eu vou executar o código em um script:

#!/bin/sh
ssh user@ip '
$(
    (sleep 2; 

    FILE="$HOME/example.log"
    DATE=$(date "+%d-%m-%Y %H:%M:%S")
    echo flush_all  

    if [ $? == 0 ]; then 
        RES="Success " 
    else 
        RES="Fail "
    fi;

    echo "$DATE - $RES" >> $FILE; 

    sleep 2; 
    echo quit; 
) | telnet <ip> 11211);' 2>/dev/null

Mas sempre retorna um sucesso, mesmo se o comando for añskjdflña, e eu não sei como obter a diferença entre OK e ERROR.

    
por oootramas 09.10.2017 / 12:58

0 respostas