如何在手机上优雅地停止tcpdump进程?

时间:2016-07-14 06:58:06

标签: android python automation subprocess adb

我正在尝试自动从Android设备获取网络日志到Windows系统。为此,我需要发送多个命令。我能够为他们中的大多数人加入俱乐部,但现在我陷入困境,我必须停止tcpdump进程并使用adb pull从设备复制捕获文件。

我正在使用此命令启动tcpdump

adb shell su -c ./data/tcpdump -i any -s 0 -w /sdcard/Download/tcpdump.pcap

手动运行上面的命令工作正常,所以我假设以下python代码也很好:

self._proc3 = Popen(shlex.split(cmd),stdout=PIPE ,stderr=PIPE)

为了停止这个过程,我尝试了多种方法,如:

\x03\n中发送ctrl-c,Popen全部。此外,使用taskill终止子进程。然而,没有任何作用。捕获文件未创建。我不知道这是由于某些Windows限制还是我做错了什么。

1 个答案:

答案 0 :(得分:1)

您需要将SIGINT信号发送到tcpdump进程。

根据可用的busybox / toolbox / toybox版本,以下内容将使所有正在运行的tcpdump实例停止捕获并转储日志:

adb shell su -c killall -q -2 tcpdump