как перехватить tcpdump на удаленных хостах и ​​скопировать tcpdump локально - PullRequest
0 голосов
/ 26 апреля 2019

Как захватить 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

...