在后台运行控制台应用程序

时间:2013-05-11 14:51:43

标签: python

我正在使用python中的脚本,首先我将ettercap设置为ARP中毒,然后启动urlsnarf来记录URL。我想首先启动ettercap,然后在中毒时启动urlsnarf。问题是这些作业必须同时运行,然后urlsnarf显示输出。所以我认为这样会很好如果我可以在后台运行ettercap而无需等待退出然后运行urlsnarf。我试过命令nohup,但当时urlsnarf必须显示脚本刚刚结束的url。我跑:

subprocess.call(["ettercap",
                 "-M ARP /192.168.1.254/ /192.168.1.66/ -p -T -q -i wlan0"])

但我明白了:

  

ettercap NG-0.7.4.2版权所有2001-2005 ALoR& NAGA

     

MITM方法'ARP /192.168.1.254/ /192.168.1.66/ -p -T -q -i wlan0'不受支持......

这意味着参数不能正确传递

1 个答案:

答案 0 :(得分:1)

您可以使用Python标准库中的子进程模块将ettercap作为一个单独的进程生成,该进程将与父进程同时运行。使用子进程中的Popen类,您将能够生成您的ettercap进程运行其他处理,然后在完成后终止ettercap进程。更多信息:Python Subprocess Package

import shlex, subprocess

args = shlex.split("ettercap -M ARP /192.168.1.254/ /192.168.1.66/ -p -T -q -i wlan0")
ettercap = subprocess.Popen(args)

# program continues without waiting for ettercap process to finish.