2016-07-21 22 views
1

我试图运行此代码:无法分析参数

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

和错误是:

“无法解析参数:参数为‘--command/-E’不一个有效的命令:文本结束之前找到匹配报价“。 (案文“的bash -c “arpspoof -i” +间+ “-t” +目标+ “” +门户”“)”

这里是我的全部代码:

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" ' """)来做到这一点,但它返回错误:

“无法解析参数:“--command/-e”的参数不是一个有效的命令:文本在找到匹配引用之前结束“。 (文本是'bash -c“arpspoof -i”+ inter +“-t”+ target +“”+ gateway“')”

谢谢。

+0

要做的第一件事就是将命令保存到一个变量,然后验证该命令是否正是您期望的命令。 –

回答

1

问题是,您尝试在三重引号字符串中添加字符串。您似乎试图将变量的值放入三重引号字符串中,但实际上将字符串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)) 
+0

好的,当我这样做时,它会返回此错误:os.system(“arpspoof -i”+ inter +“-t”+ gateway +“”+ target) ^ SyntaxError:无效的语法 –

+0

我需要做什么。那个格式呢? –

+0

这不是一个语法错误,它可能是它上面的行。但这是一个新问题。 –