почему я получаю ошибку атрибута "AttributeError: у объекта" Значения "нет атрибута" интерфейс "" - PullRequest
1 голос
/ 08 января 2020

Traceback (последний вызов был последним): файл "hello.py", строка 12, в interface = options.interface AttributeError: объект "Значения" не имеет атрибута "interface"

import subprocess
import optparse

parser = optparse.OptionParser()

parser.add_option("-i", "--interface", dest=" interface ", help=" Interface to change its MAC address ")

parser.add_option("-m", "--mac", dest=" mac ", help=" new mac address ")

(options, arguments) = parser.parse_args()

interface = options.interface
mac = options.mac

print("[+] Changing mac address for " + interface + " to " + mac)

subprocess.call(["ifconfig ", interface, " down"])

subprocess.call(["ifconfig ", interface, " hw", "ether", mac])

subprocess.call(["ifconfig ", interface, " up"])

Примечание: - Я использую VirtualBox для запуска этой программы.

1 Ответ

2 голосов
/ 08 января 2020

dest параметр add_option определяет член объекта Values. Вы использовали имя с начальными и конечными пробелами. Это определяет члены с пробелами в нем, недоступные классическим доступом к полю.

Для отладки просто выполните:

print(dir(options))

это печатает:

[' interface ', ' mac ', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', … other members ...]

Удалите пробелы, и вы сможете получить доступ к interface и mac:

parser.add_option("-i", "--interface", dest="interface", help=" Interface to change its MAC address ")
parser.add_option("-m", "--mac", dest="mac", help=" new mac address ")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...