파이썬을 사용하여 tcpdump를 실행하여 휴대 전화에서 일부 검사 요청을 캡처합니다. 지금은 콘솔에 인쇄 중입니다.파이썬 하위 프로세스가 모든 행을 출력하지 않습니다.
def dumpNexus(self):
proc = subprocess.Popen(["sudo", "tcpdump", "-i", "mon.wlan0", "-e", "-s", "0", "type", "mgt", "subtype", "probe-req", "and", "ether host", "bc:f5:ac:f2:xx:xx"], stdout=subprocess.PIPE,)
for line in iter(proc.stdout.readline,''):
print proc.stdout.readline()
내 문제는 내가이 프로그램을 실행하면, 그것은 tcpdump
에 의해 작성되고있는 모든 라인을 인쇄 할 것입니다.
tcpdump
명령을 실행하고 해당 출력을 파이썬 프로그램과 비교하면 파이썬 프로그램의 표시되는 패킷 수가 훨씬 적습니다.
tcpdump
는 28 개 패킷을 포착 만 (11)이 구성 프로세스 stdout
통해 출력되는 것을 명시한다.
왜 이런 생각입니까? -l
플래그를 사용 -
덕분에
그럼 당신이 전화하는거야'의 readline()'두 번, 당신은 무엇을 기대를? –
그냥 인쇄 라인 –