Страница man sudo указывает:
-S, --stdin
Write the prompt to the standard error and read the password from the stan‐
dard input instead of using the terminal device. The password must be fol‐
lowed by a newline character.
Запуск следующего кода должен решить вашу проблему:
p = subprocess.Popen(["sudo", "-S", "cmd"], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
p.stdin.write("password\n")
Очевидно, убедитесь, что вы ввели правильный пароль, иначе он не будетРабота.Кроме того, не забудьте добавить \n
в конце.
В качестве альтернативы вы можете запустить nmap как непривилегированный пользователь .Это позволит вам использовать nmap --privileged ...
, который не требует пароля.Как указано в ссылке, убедитесь, что вы понимаете проблемы безопасности, чтобы убедиться, что это не проблема для вашего варианта использования.