используя python изменить ма c адрес - PullRequest
0 голосов
/ 02 мая 2020

Я новичок, пожалуйста, мне нужна помощь. Я пытаюсь написать код, который поможет мне изменить мой ма c адрес, но когда я запускаю этот python код import subprocess subprocess.call("sudo ifconfig",shell=True) # shutdown interface, они спрашивают у меня пароль. Пожалуйста, помогите мне написать код для ввода пароля из скрипта python и передать этот этап enter image description here

Ответы [ 2 ]

0 голосов
/ 02 мая 2020

Вы можете придерживаться лучших практик и использовать принятый метод для взаимодействия с подпроцессами.

import subprocess


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

Подробно об этом методе операций можно прочитать в документах , но в нескольких словах об этом:
Гораздо проще программировать, потому что у вас есть обычные инструменты кодирования, которые вы ожидаете. Такие как исключения и возвращаемые значения.

В приведенном выше примере мы используем рекомендованный -S, который указывает sudo использовать обычный канал связи stdin для приема данных ввода. Каждый процесс имеет 3 канала связи: stdin, stdout и stderr. Их имена подразумевают их намерение. stdin для ввода, stdout для нормального вывода (без ошибок), stderr для вывода, означающего ошибки. Чувствительный ввод не использует обычный stdin, который sudo предлагал в вашем сообщении об ошибке.

Мы просим subprocess.run использовать новый stdout канал с синтаксисом subprocess.PIPE. В противном случае он наследует те же каналы связи от своего родителя (сценарий Python), а выходные данные команды sudo -S ls будут немедленно выгружены в выходные данные сценария Python. Что, как правило, нежелательно.

Наконец, мы печатаем результаты.

0 голосов
/ 02 мая 2020

Для этого лучше всего использовать 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...