¿Cómo sincronizar el programa en ejecución en el host remoto y el host local?

0

En un host remoto, ejecuto este comando:

tcpdump -i any -v "tcp or udp" > /tmp/tcpdump.log

Entonces, si hay tráfico TCP / UDP en ese host, la salida de tcpdump se guarda en /tmp/tcpdump.log

En mi host perdido tengo este script BASH:

ssh $remote_host  "cp /tmp/tcpdump.log  /tmp/tcpdump.log.bak"
echo foo | nc  $remote_host  $port   <== send some traffic to remote host
ssh $remote_host  "diff /tmp/tcpdump.log  /tmp/tcpdump.log.bak > /tmp/tcpdump.diff"

cuando ejecuto este script una vez, funciona bien. Pero cuando lo coloco en un bucle, puede estropearlo fácilmente, tcpdump.diff no captura una salida tcpdump completa o tiene más de una ronda de salida.

Me parece que lo siguiente está desincronizado:

  1. remoto: tcpdump guarda el resultado en /tmp/tcpdump.log
  2. remoto - copia de seguridad /tmp/tcpdump.log
  3. local - crear tráfico

¿Hay alguna solución simple para ponerlos en orden? ¿Tengo que crear algún archivo temporal en el host remoto como un semáforo?

my_question
fuente
3
¿Para qué es este artilugio? ¿Estás seguro de que no hay Problema XY ¿aquí?
Kamil Maciorowski