На удаленном хосте я запускаю эту команду:

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

Итак, есть ли на этом хосте трафик TCP/UDP, выходные данные tcpdump сохраняются в /tmp/tcpdump.log

На моем потерянном хосте у меня есть этот 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"

когда я запускаю этот скрипт один раз, он работает нормально. Но когда я помещаю его в цикл, он может легко испортиться, tcpdump.diff либо не захватывает один полный вывод tcpdump, либо имеет более одного раунда вывода.

Мне кажется, что несинхронизировано следующее:

  1. remote - tcpdump сохраняет вывод в /tmp/tcpdump.log
  2. удаленный - резервное копирование /tmp/tcpdump.log
  3. локальный - создать трафик

Есть ли какое-то простое решение, чтобы привести их в надлежащий порядок? Нужно ли создавать временный файл на удаленном хосте в качестве семафора?

0