python - 在后台运行 tcpdump
问题描述
我有一个问题,我正在做一个实验,所以我试图通过双 ssh 运行 python 脚本,所以我必须捕获每个节点上的流量,然后我制作了一个可以在每个节点上运行的函数。但问题是我无法在启动 Tcpdump 后运行脚本来启动流量(运行 tcp dump 后提示挂起)。我尝试了很多方法来解决这些问题,但我仍然注意到最好的方法。我只想在后台运行 tcpdump 并在节点上运行其他命令。
我已经尝试过选项“nohup”或将“&”放在最后,但出现语法错误。我在 Mac 操作系统上运行它。
这是 pom.sh 中的 python 脚本外壳:
def function(run-tcpdump):
local interface="mon0"; shift
local output="fit"; shift
local USAGE="Usage; $FUNCNAME interface output [tcpdump extra args]"
[ -z "$output" ] && { echo $USAGE; return 1; }
cd
local command="tcpdump -n -U -w ${output}.pcap -i ${interface} "
echo "${interface} traffic tcpdump'ed into $pcap with command:"
echo "$command"
$command
return 0
这就是我在 pom.py 中调用函数的地方:
run_sender = SshJob(
node=sender,
commands=[RunScript(auxiliary_script, "run-tcpdump"),
RunScript(auxiliary_script, "run-sender", packets, size, period)],
label="run-sender")
如您所见,我必须运行名为 run-sender 的其他函数才能开始发送数据包,但是当启动 tcpdump 函数时,远程 shell 被挂起,我无法再运行函数“run-sender”。
这是下面的描述:
等待某个接口在驱动程序 iwlwifi 上运行使用 wlan 设备 intel tcpdump:监听 mon0,链接类型 IEEE802_11_RADIO(802.11 加上 radiotap 标头),捕获大小 262144 字节
注意/对不起我的baenglish :)
谢谢大家。