На удаленном хосте я запускаю эту команду:
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, либо имеет более одного раунда вывода.
Мне кажется, что несинхронизировано следующее:
- remote - tcpdump сохраняет вывод в /tmp/tcpdump.log
- удаленный - резервное копирование /tmp/tcpdump.log
- локальный - создать трафик
Есть ли какое-то простое решение, чтобы привести их в надлежащий порядок? Нужно ли создавать временный файл на удаленном хосте в качестве семафора?