Redirecionando a saída do processo em execução via SSH em segundo plano

3

Esta é minha pergunta geral: Como você faz login em um servidor remoto, inicia um processo em execução contínua, redireciona a saída padrão desse processo para um arquivo na máquina local e executa tudo isso em segundo plano ( na máquina local)?

Mais especificamente, estou tentando canalizar a saída tshark de um Raspberry Pi remoto para minha máquina local (na verdade, outra máquina remota com o Windows executando o Cygwin - long story) e gravá-la em um arquivo de log. Comecei executando o comando sem redirecionamento de saída:

ssh pi@remotehost "\
sudo tshark \
-i wlan1mon \
-I -l -f broadcast \
-Y wlan.fc.subtype==4 \
-T fields \
-e wlan.sa \
-e frame.time_epoch"

Isso parece funcionar como eu esperava; Eu recebo um fluxo de dados no terminal. Em seguida, tentei adicionar o redirecionamento de saída:

ssh pi@remotehost "\
sudo tshark \
-i wlan1mon \
-I -l -f broadcast \
-Y wlan.fc.subtype==4 \
-T fields \
-e wlan.sa \
-e frame.time_epoch" \
> /var/tshark.out

Isso também parece funcionar como esperado; Eu vejo erro padrão escrito no terminal e depois de terminar o processo e verificar o arquivo de saída (/var/tshark.out) vejo a saída padrão do tshark. Em seguida, tento executar isso em segundo plano na minha máquina:

ssh pi@remotehost "\
sudo tshark \
-i wlan1mon \
-I -l -f broadcast \
-Y wlan.fc.subtype==4 \
-T fields \
-e wlan.sa \
-e frame.time_epoch" \
> /var/tshark.out &

Infelizmente, isso não tem o efeito desejado. Quando eu verificar o arquivo de saída está vazio, e quando eu verificar o status do trabalho (executando o comando "jobs"), vejo que está parado. Aqui está a saída dos trabalhos (eu reformatei um pouco para facilitar a leitura):

[1]+  Stopped   ssh pi@remotehost
                "sudo tshark
                -i wlan1mon
                -I -l -f broadcast
                -Y wlan.fc.subtype==4
                -T fields
                -e wlan.sa
                -e frame.time_epoch"
                > /var/tshark.out &

Isso me levou ao caminho de tentar várias permutações de background e de nohuping tanto no processo remoto quanto no local, mas sem sucesso.

    
por igal 04.06.2017 / 19:31

1 resposta

4

Use a opção -f para o ssh , que enviará o comando para o segundo plano após a autenticação e outras etapas potencialmente interativas.

    
por 04.06.2017 / 20:10