ash*_*h g 12 python subprocess popen tcpdump
我试图在python中处理tcpdump输出.
我需要的是运行tcpdump(捕获数据包并给我信息)并读取输出并处理它.
问题是tcpdump一直在运行,我需要在输出后立即读取数据包信息并继续执行.
我试着查看python的子进程并尝试使用popen调用tcpdump并管道stdout但它似乎没有用.
关于如何进行此操作的任何指示.
import subprocess
def redirect():
tcpdump = subprocess.Popen("sudo tcpdump...", stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)
while True:
s = tcpdump.stdout.readline()
# do domething with s
redirect()
Run Code Online (Sandbox Code Playgroud)
sws*_*phe 19
您可以使用"-l"使tcpdump行缓冲.然后,您可以使用子进程捕获输出.
import subprocess as sub
p = sub.Popen(('sudo', 'tcpdump', '-l'), stdout=sub.PIPE)
for row in iter(p.stdout.readline, b''):
print row.rstrip() # process here
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18570 次 |
| 最近记录: |