찾다

 >  Q&A  >  본문

subprocess - python实时获取tcpdump输出

linux tcpdump命令行执行后回显是一行一行输出的,但是如果用python的subprocess执行tcpdump命令就会成为一段一段的回显,实时性不高。这个怎么解决?有人说是tcpdump本身的原因,和linux缓存有关系,但是python有没有办法实现和命令行一行一行输出的效果。
代码如下

#coding=utf-8
import subprocess

p = subprocess.Popen("tcpdump udp -i eth0",shell=True,stdout=subprocess.PIPE)

while p.stdout.readline()!=' ':

    line = p.stdout.readline()
    line = line.strip()
    print line
天蓬老师天蓬老师2804일 전874

모든 응답(4)나는 대답할 것이다

  • 怪我咯

    怪我咯2017-04-18 10:19:45

    tcpdump -l 옵션

    회신하다
    0
  • 怪我咯

    怪我咯2017-04-18 10:19:45

    제공하신 코드에는 이 줄에 버그가 있는데, p.stdout.readline()!=' '
    다음과 같이 수정하세요!

    으아아아

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-18 10:19:45

    으아아아

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:19:45

    특정 항구 서비스를 수동적으로 시작하는 데 사용되는 이것도 제가 만들었어요!

    으아아아

    회신하다
    0
  • 취소회신하다