无法解析参数

时间:2016-07-21 14:10:22

标签: python linux bash

我试图运行此代码:

os.system("""gnome-terminal -e 'bash -c "arpspoof -i " + inter + " -t " + target + " " + gateway" ' """)

,错误是:

"无法解析参数:参数" - 命令/ -e"不是有效命令:文本在找到"的匹配引号之前结束。 (文字是' bash -c" arpspoof -i" + inter +" -t" + target +"" + gateway&#34 ;')"

这是我的整个代码:

import os
import time

def drift():
    global gateway
    gateway = raw_input("Gateway IP > ")
    time.sleep(0.5)
    global target
    target = raw_input("Target IP > ")
    time.sleep(0.5)
    global inter
    inter = raw_input("Interface > ")
drift()

os.system("""gnome-terminal -e 'bash -c "arpspoof -i " + inter + " -t " +   target + " " + gateway" ' """)

所以对于那些不了解" Driftnet"是,它是一个MITM攻击程序来拾取图片。要进行设置,您必须输入一个终端

" arpspoof -i -t"

然后打开一个新的终端并键入相同的东西,但是网关IP和目标IP的顺序切换,以诱使你的目标认为你是路由器。

我希望我的程序询问网关IP,目标IP,接口,然后运行 " arpspoof -i -t"

然后打开一个新的终端并键入相同的东西,除了将网关IP和目标IP的顺序切换到目标首先的位置,网关是第二个,而无需用户输入任何东西,我就是尝试使用os.system("""gnome-terminal -e 'bash -c "arpspoof -i " + inter + " -t " + target + " " + gateway" ' """)来执行此操作,但它会返回错误:

"无法解析参数:参数" - 命令/ -e"不是有效命令:文本在找到"的匹配引号之前结束。 (文字是' bash -c" arpspoof -i" + inter +" -t" + target +"" + gateway&#34 ;')"

感谢。

1 个答案:

答案 0 :(得分:2)

问题在于您尝试在三引号字符串中添加字符串。您似乎试图将变量的值放入三重引号字符串中,但实际上是将文字字符串gnome-terminal -e 'bash -c "arpspoof -i " + inter + " -t " + target + " " + gateway" '传递给os.system()

您需要做的是使用format

os.system("""gnome-terminal -e 'bash -c "arpspoof -i {inter} -t {target} {gateway}" ' """.format(inter=inter, target=target, gateway=gateway))