很难用情况来解释。我会尽力的。你知道吗
我正在制作一个程序,让新用户更容易使用漂流网。
首先输入网关IP,然后输入目标IP,即您的接口。在程序中,一旦您输入所有这些,它将打开一个新的终端窗口,然后您启动第二个程序,该程序将翻转IP的原始顺序。我可以让用户手动切换它,但我希望它只是自动切换它。要做到这一点,我必须使用global
来保存输入信息,所以它只需切换它。问题是,当我运行第二个程序时,第一个程序又重新启动了。你知道吗
#This it the first program
#"Driftnet.py"
import os
import time
from subprocess import call
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()
call(["gnome-terminal"])
os.system("arpspoof -i " + inter + " -t " + gateway + " " + target)
我运行它,输入所有信息,然后它打开第二个终端,我运行第二个程序,在那里它切换IP。你知道吗
#This is the second program
#"Driftnet2.py"
import os
import time
from subprocess import call
import Driftnet
os.system("arpspoof -i " + Driftnet.inter + " -t " + Driftnet.target + " " + Driftnet.gateway)
当我运行它时,它几乎只运行第一个程序,从“Gateway IP>
我完全不知道我做错了什么。你知道吗
谢谢
我不知道什么是“漂网”,我也不知道你到底想做什么,但我可以解释你看到的行为。你知道吗
在Driftnet2.py中,您可以调用:
这导致Python代码漂流网.py待评估。这就是
import
语句所做的。所有代码都是顶层的(除了从顶层调用的drift()
方法),因此导入它会运行它。你知道吗您只有一个方法,并且没有顶层变量,因此
global
声明是无用的。(似乎你认为global
关键字是IPC的,但我不确定。)要设计这个程序,首先需要退一步回答一些基本问题。比如,如果你想从漂流网.py在一个进程到另一个进程中的Driftnet2.py的过程中,该传输将如何发生?(命令行标志?环境变量?Unix域套接字?)一旦你知道你想要你的程序做什么,我们可以帮助你实现它。你知道吗
您是否尝试过在导入后添加全局变量等,然后将函数内部的var调用为全局变量?你知道吗
这就是^{} 构造存在的目的。更改中的代码漂流网.py对此:
可能您还需要对Driftnet2.py进行一点修改。我不确定是否可以通过执行
import Driftnet
来访问全局变量。如果出现错误,请尝试import __main__ as Driftnet
。你知道吗相关问题 更多 >
编程相关推荐