2012-07-21 3 views
0

원격 호스트와 다른 인터페이스에서 tcpdump를 수집해야합니다.
현재 나는 다음과 같은 방법으로 작업을 수행합니다2 원격 호스트의 tcpdumps

ssh remotehost "tcpdump -i iface1 -w - " > iface1_dump.pcap & 
ssh remotehost "tcpdump -i iface2 -w - " > iface2_dump.pcap 

가 궁금 (어쩌면 일부 복잡한 쉘 리디렉션 치료입니다)를 연결 한 SSH에서 그것을 실현하기 위해 패킷을 손실 동안을 최소화 할 수있는 방법이있는 경우 두 번째 ssh 명령은 그것의 방법에
2 조건입니다 :
원격 호스트가 정말 제한된 디스크 공간이, 그래서 나는
tcpdump를 어떤 이더넷 헤더에 영향을 미치는 -i 해당 호스트에서 로컬 tcpdump을 할 수없는, 그래서 사용할 수 없습니다 그것 작동, 그래서

tcpdump -i iface1 -w - | nc <IP> <PORT1> 
tcpdump -i iface2 -w - | nc <IP> <PORT2> 

모든 기계가 netcat을이 있습니다

답변

0

당신은 당신이이 2 개 라인을 넣어하는 대상 컴퓨터에 파일 "SEND_DATA"를 만들 수 있습니다.

이 순간에
> OUT1 nc -l -p PORT1 
> OUT2 nc -l -p PORT1 
ssh remotehost SEND_DATA 

이 파일이 & OUT2가 데이터를 수신 시작 OUT1 : 당신은 당신의 PC에 수신 대기 포트를 열고 원격 컴퓨터에서 스크립트를 실행 SEND_DATA 실행

다음을 표시합니다.

매개 변수가 때때로 다른 것을 보았으므로 2 버전의 nc에서 설명서를 참조해야합니다.

+0

믿을 수는 없지만 해당 호스트에는 nc/netcat이 설치되어 있지 않습니다. 매우 특정한 WindRiver Linux 배포판을 사용하는 서버입니다 –

+0

그런 다음 netcat, 일부 ssh 클라이언트, 일부 ftp 클라이언트 등을 설치해야합니다. 그렇지 않으면 두 명령을 scrit 파일에 넣고 tcpdump를 다르게 출력하도록 구성 할 수 있습니다 동일한 콘솔에 저장 한 다음 병합 된 출력을 PC에서 분리하십시오. – alinsoar

0

두 ssh는 아마도 가장 좋은 방법 일 것입니다.하지만 첫 번째 것은 배경에, sed는/&/two/'를 두 번째로 사용할 수도 있습니다. 예를 들어 "egrep '^ one'| sed '/ s/one //'"을 사용하여 로컬 호스트에서 분리하십시오.

출력을 파일 쌍에 저장하고 "완료"하면 다시 scp로 출력 할 수도 있습니다.

0
ssh remotehost "tcpdump -iiface1 -w- & 
       tcpdump -iiface2 -w- >&2 2>/dev/null" >iface1_dump.pcap 2>iface2_dump.pcap 
관련 문제