Capturar saída de um comando executado remotamente via SSH falha no CRON

2

Esta questão está diretamente relacionada a esta: ssh falha ao executar comando remoto quando executado a partir do script cron bash - funciona a partir do CLI

Não posso comentar a resposta aceita, pois não tenho representante suficiente, por favor, tenha paciência comigo.

Estou executando um script em uma máquina Linux PC e o host que eu estou tentando obter a saída é um roteador com o seu sistema operacional, então não é nada que eu possa influenciar em termos de configuração do console. Basicamente executando isso no cron: OUT=$(ssh -tt -vv [email protected] "remote command") me obtém uma variável vazia.

debug1: Sending command: remote command
debug2: channel 0: request exec confirm 1
debug2: callback done
debug2: channel 0: open confirm rwindow 2621440 rmax 262144
debug2: channel 0: read<=0 rfd 4 len 0
debug2: channel 0: read failed

Se eu estiver executando este cron externo, ou seja, na CLI, estou recebendo a saída conforme o esperado. Como você pode ver, a opção -tt para forçar a alocação pseudo-tty não ajuda.

Alguma solução para isso ajuda o cron a superar o console remoto com bugs?

    
por vobelic 24.05.2014 / 19:00

3 respostas

2

Seu comando imprime os resultados stderr ou stdout?

Você pode redirecionar stderr para stdout usando

OUT=$(ssh -tt -vv [email protected] "remote command" 2>&1 )
    
por 02.03.2016 / 23:00
0

Você considerou usar caminhos totalmente qualificados para o cronjob?

Use /usr/bin/ssh user@host em vez de ssh user@host

    
por 24.05.2014 / 22:22
-1

Alguns roteadores ou dispositivos incorporados têm implementações SSH muito ruins. Já vi casos em que eles só sabem ler comandos do console e não conseguem lidar com comandos passados na linha de comando. Se este for o seu caso, você pode querer tentar colocar o comando remoto no ssh remoto.

echo remote command | ssh user@host

Se isso ajudar, talvez você tenha mais sorte tentando codificar algo com expect .

    
por 11.02.2015 / 05:36

Tags