全局无法正常工作[Python]

全局无法正常工作[Python],python,Python,这很难用实际情况来解释。我会尽力的 我正在制作一个程序,让新用户更容易使用漂网。 首先输入网关IP,然后输入目标IP,即您的接口。在程序中,一旦您输入所有这些,它将打开一个新的终端窗口,然后启动第二个程序,该程序将翻转IPs的原始顺序。我可以让用户手动切换,但我希望它只是自动切换。要做到这一点,我必须使用global来保存输入信息,因此它只需切换即可。问题是,当我运行第二个程序时,它会重新启动第一个程序 #This it the first program #"Driftnet.py" i

这很难用实际情况来解释。我会尽力的

我正在制作一个程序,让新用户更容易使用漂网。 首先输入网关IP,然后输入目标IP,即您的接口。在程序中,一旦您输入所有这些,它将打开一个新的终端窗口,然后启动第二个程序,该程序将翻转IPs的原始顺序。我可以让用户手动切换,但我希望它只是自动切换。要做到这一点,我必须使用
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)
当我运行它时,它几乎只是运行第一个程序,从“网关IP>问题开始。”

我完全不知道我做错了什么


谢谢

您是否尝试过在导入等之后添加全局变量,然后将函数内部的变量调用为全局变量

import os
import time
from subprocess import call
gateway = ''
target = ''
inter = ''
我不知道什么是“漂网”,我也不确定你到底想做什么,但我可以解释你看到的行为

在floftnet2.py中,您可以调用:

import Driftnet
这将导致对floftnet.py中的Python代码进行求值。这就是
import
语句所做的。所有代码都是顶级的(除了从顶级调用的
drift()
方法),因此导入它会运行它

您只有一个方法,并且没有顶级变量,因此
global
声明是无用的。(你似乎认为
global
关键字是IPC的,但我不确定。)

要设计这个程序,您需要先退一步,回答一些基本问题。例如,如果您希望在一个进程中将信息从floftnet.py传输到另一个进程中的floftnet2.py,那么该传输将如何进行?(命令行标志?环境变量?Unix域套接字?)。将floftnet.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 > ")

if __name__=='__main__':
    drift()

    call(["gnome-terminal"])

    os.system("arpspoof -i " + inter + " -t " + gateway + " " + target)


您可能还对漂移网络2.py进行了一些修改。我不确定您是否能够通过执行
导入漂移网
来访问全局变量。如果您遇到错误,请尝试将import\uu main\uuuuuuuuuuuuu作为漂移网。

如果在第二个程序中打印出Driftnet.target和
Driftnet.gateway
,会发生什么?在第二个或第一个程序中?尝试第一个程序。当我这样做时,会显示“分段错误”,并且不会开始使用ARPSOOF,但这确实开启了一个新的终点。。它在简单的情况下工作..不确定这段代码要做什么..如果我必须这样做,我会先运行py,然后以类的方式调用第二个py,这样我就可以很容易地将变量发送到类中。你听起来好像知道你在做什么,太糟糕了,我对python有点陌生。我真的不知道我需要做什么,但我想要的是将来自原始输入变量的信息存储在Driftnet.py中,并在Driftnet2.py中使用这些信息。我不知道我应该用什么方法来做这件事,但是你有什么建议?正如我所说的,我不知道什么是“漂移网”或者它需要如何设置。如果你想让两个程序互相对话,你需要了解IPC,这在这里的评论中是无法描述的。