gpt4 book ai didi

python - 全局无法正常工作 [Python]

转载 作者:太空宇宙 更新时间:2023-11-04 05:26:31 24 4
gpt4 key购买 nike

很难按情况解释。我会尽我所能。

我正在制作一个程序,使新用户更容易使用 driftnet。您首先输入网关 IP,然后输入目标 IP,即您的接口(interface)。在程序中,一旦你输入所有这些,它就会打开一个新的终端窗口,然后你启动第二个程序来翻转 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)

当我运行它时,它几乎只运行第一个程序,从“网关 IP >”的问题开始

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

谢谢

最佳答案

我不知道“Driftnet”是什么,我不确定你到底想做什么,但我可以解释你看到的行为。

在 Driftnet2.py 中,您调用:

import Driftnet

这会导致计算 Driftnet.py 中的 Python 代码。这就是 import 语句的作用。您的所有代码都是顶层代码(drift() 方法除外,它是从顶层调用的),因此导入它会运行它。

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

要设计这个程序,您首先需要退一步回答一些基本问题。比如,如果您想将信息从一个进程中的 Driftnet.py 传输到另一个进程中的 Driftnet2.py,该传输将如何发生? (命令行标志?环境变量?Unix 域套接字?)一旦您知道您希望程序做什么,我们就可以帮助您实现它。

关于python - 全局无法正常工作 [Python],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38493045/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com