使用Python更改MAC地址

时间:2020-05-02 08:02:37

标签: python linux

我是初学者。我正在尝试编写代码来帮助我更改我的MAC地址,但是当我运行此python代码时

import subprocess
subprocess.call("sudo ifconfig",shell=True) # shutdown interface`

它要求我输入sudo的密码。

请帮助我编写代码以从Python脚本输入密码并传递此etape。

enter image description here

2 个答案:

答案 0 :(得分:0)

您可以遵循最佳做法,并使用公认的方法与子流程进行通信。

import subprocess


out = subprocess.run('sudo -S ls', shell=True, input=b'123', stdout=subprocess.PIPE)
print(out.stdout)

您可以在docs中广泛阅读有关此操作方法的内容,但请注意以下几点:
编程起来容易得多,因为您拥有期望的常用编码工具。如异常和返回值。

在上面的示例中,我们使用推荐的-S来告诉sudo使用常规的stdin通信通道来接收输入数据。每个进程都带有3个通信通道,stdinstdoutstderr。他们的名字暗示了他们的意图。 stdin表示输入,stdout表示正常输出(无错误),stderr表示表示错误。敏感输入不使用常规stdin,这是sudo在错误消息中所建议的。

我们要求subprocess.run使用语法为stdout的新subprocess.PIPE频道。因为,否则,它将从其父级(Python脚本)继承相同的通信通道,因此sudo -S ls命令输出将立即转储到Python脚本输出。通常,这是不希望的。

最后,我们打印结果。

答案 1 :(得分:-1)

为此,最好使用pexpect(与pip install pexpect一起安装):

import pexpect
pipe = pexpect.spawn("sudo ifconfig")
pipe.expect_exact("[sudo] password for kali: ")
pipe.sendline("your_password")
pipe.expect(pexpect.EOF, timeout=None)
相关问题