Как захватить tcpdump одновременно на целевых хостах и скопировать один и тот же захваченный tcpdump на текущий хост-компьютер
My Current Host
-->Target Host1 'ip : XX.X.X.X' username : abc password : xyz
-->Target Host2 'ip : XX.X.X.Y' username : abc password : xyz
-->Target Host3 'ip : XX.X.X.Z' username : abc password : xyz
В настоящее время я войду в систему на соответствующем целевом компьютере и получу tcpdump и выполню scp на Мой текущий хостКоманда
, используемая для захвата tcpdump на целевой машине: tcpdump -i eth1 -w filename.pcap
команда, используемая для копирования захваченного tcpdump на текущий хост: scp filename username@My_Current_Host_IP:/path/
Попытка с использованием remotecap
Я попытался сделать снимок с помощью remotecap.но получая следующую ошибку Используемая команда: remotecap -w filename.pcap hosts XX.XXX
Traceback (most recent call last):
File "/usr/local/lib/python3.6/concurrent/futures/thread.py", line 56, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/local/lib/python3.6/socket.py", line 745, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/concurrent/futures/_base.py", line 324, in _invoke_callbacks
callback(self)
File "/usr/local/lib/python3.6/asyncio/futures.py", line 419, in _call_set_state
dest_loop.call_soon_threadsafe(_set_state, destination, source)
File "/usr/local/lib/python3.6/asyncio/base_events.py", line 620, in call_soon_threadsafe
self._check_closed()
File "/usr/local/lib/python3.6/asyncio/base_events.py", line 357, in _check_closed
raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
Примечание: попытка захвата для одного хоста.
попробовал это также через shell script shell script, чтобы перехватить tcpdump на удаленном хосте и сохранить его локально, который работает нормально, но не завершает работу.но как мне сделать, чтобы запустить на нескольких хостах и выйти
file1.sh
#!/usr/bin/bash
Target1(){
sshpass -p 'password' ssh -T username@XX.X.X.X <<- EOF > filename1.pcap
tcpdump -i eth1 -s 0 -n -v -U -w -
EOF
}
Target1
file2.sh
#!/usr/bin/bash
Target2(){
sshpass -p 'password' ssh -T username@XX.X.X.Y <<- EOF > filename2.pcap
tcpdump -i eth1 -s 0 -n -v -U -w -
EOF
}
Target2
file3.sh
#!/usr/bin/bash
trap "cleanup" SIGINT SIGTERM
cleanup()
{
PID1=`ps aux | grep "Target1.pcap" |grep -v grep | awk '{print $2}'`
PID2=`ps aux | grep "Target2.pcap" |grep -v grep | awk '{print $2}'`
kill -9 $PID1 $PID2
}
sh -x file1.sh & sh -x file2.sh &
Проблема здесь даже после выхода из запущенного скрипта file3.sh.Тем не менее tcpdump работает в фоновом режиме на удаленном хосте, жестко пытаясь убить работающий tcpdump на удаленном хосте, используя pid