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.
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.