stdout에는 쓸 수 있지만 파일에는 쓸 수 없습니다


0

방문한 URL을 추적하고 싶기 때문에 다음과 같은 명령 줄을 사용합니다.

tcpdump -ien1 -v -X 'tcp port 80'| sed -nl 's / ^. 0x [0-9a-f] {4} :. {43} (. ) $ / \ 1 / p '| perl break.pl | perl -pe's / (GET | POST). (. ?). HTTP / 1 .... 호스트 :. ([a- zA-Z._0-9-] ) ../ "\ nBEGURL".localtime (). ": $ 1 http : // $ 3 $ 2 \ n"/ ge ' | grep "^ BEGURL"

한 줄에 하나의 URL로 정상적으로 작동합니다. 하지만 내가하면

tcpdump -ien1 -v -X 'tcp port 80'| sed -nl 's / ^. 0x [0-9a-f] {4} :. {43} (. ) $ / \ 1 / p '| perl break.pl | perl -pe's / (GET | POST). (. ?). HTTP / 1 .... 호스트 :. ([a- zA-Z._0-9-] ) ../ "\ nBEGURL".localtime (). ": $ 1 http : // $ 3 $ 2 \ n"/ ge ' | grep "^ BEGURL" >> / tmp / out

(종료 통지 >> / tmp / out) 그러면 파일이 비어 있습니다! 왜 그런지 아십니까? 그것은 완전히 비논리적입니다.

또한 stdout 및 stderr을 / tmp / out으로 리디렉션하려고 시도했지만 여전히 비어 있습니다. 파일에 쓰기 권한이 있습니다. 나는 그것이 무엇인지 전혀 모른다. stdout 및 stderr 이외의 다른 것이 있습니까?

도움이 필요하시면

답변:


0

"stdout 및 stderr을 / tmp / out으로 리디렉션하려고 시도했습니다."라고 말했을 때이 작업을 시도했을 수도 있습니다. 그러나 가장 가능성있는 문제인 것 같습니다. 2> & 1을 끝에 추가하십시오.

그렇지 않으면 디버그하는 데 도움이되도록 첫 번째 명령에 2> / dev / null을 추가하고 여전히 출력을 얻는 지 확인하십시오.

또한 테스트 명령을 단순화 할 수 있습니까? 예를 들어 다음과 같이 작동합니다.

tcpdump -ien1 -v -X 'tcp port 80' >> /tmp/out

0

며칠 전에 같은 문제가있었습니다. -w패킷을 파일에 쓰 려면 옵션을 사용해보십시오 . 자세한 내용은을 참조하십시오 man tcpdump.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.