Estamos fazendo uma captura remota tcpdump
no unix. Sempre que o ssh é eliminado (qualquer interrupção, ou seja, por ctrl c ou qualquer outro), precisamos que tcpdump
o outro lado seja interrompido/eliminado.
Tentamos a maioria das opções listadas para eliminar um processo gerado pelo SSH quando o ssh é eliminado. Para tcpdump, ssh com -t não é viável, pois prefixa uma linha no início, o que não é esperado.
Portanto, se alguém já trabalhou nesse tipo de problema, gostaríamos de saber alguma boa solução para conseguir isso.
Estou executando tcpdump
remotamente como root assim:
ssh {remotehost} "tcpdump -i eth0 -s 0 -w - " > /tmp/local_file
Obrigado.
Responder1
Executando-o remotamente, se você encerrar o ssh
processo, a outra extremidade deverá morrer. A menos que você deixe esse fim suspenso por algum motivo. Se for esse o caso, você pode querer executá-lo como parte de um script maior em segundo plano.
Você também não deve usar root remotamente e certamente não precisa de root ao lado do ssh. Evite trabalhar o mais root possível. Use um usuário remoto com sudo
recursos.
Você provavelmente também não precisa de "w -", pois tcpdump
por padrão grava no stdout.
Você também pode limitar tcpdump
o número de pacotes capturados para controlar melhor a sessão. Observe que você deve excluir a porta 22 do sistema, caso ssh
contrário, o sistema remoto capturará a sessão atual de uma forma recursiva de autoalimentação.
Então, para capturar 1000 pacotes, você poderia fazer:
$ssh [email protected] "sudo tcpdump -i eth0 -s0 -c 1000 not port 22" > /tmp/local_file
Outra alternativa menos limpa é executar depois de um pkill:
$ssh ..."sudo tcpdump"
$ssh ..."pkill tcpdump"
Como último aviso, /tmp
ou a raiz onde reside, geralmente está em sistemas de arquivos limitados ou na RAM; também é um risco de segurança criar nomes previsíveis em um diretório /tmp, especificamente como um usuário privilegiado. Você pode querer usar outro local para o arquivo de captura.
Você também pode obter melhores resultados como administrador de sistema investindo em uma ferramenta como o ansible
. Para automatizar ou usar ferramentas mais complexas para administração remota, consulteLinux equivalente à comunicação remota "um para muitos" do PowerShell