Есть несколько решений, которые автоматически вставляют пароль, но поскольку они видны в открытом тексте на мгновение, это опасно, и вы не должны их использовать. Некоторые методы обсуждаются здесь.
Это правильный способ запуска программы python как root:
import os
import sys
import subprocess
def main():
status, output = subprocess.getstatusoutput("apt-get update")
return status
if __name__ == '__main__':
if os.getuid():
print("This program needs to be run with root privileges,")
print("please use `sudo ./{0}` to execute it".format(*sys.argv))
sys.exit(100)
else:
sys.exit(main())
И метод четкого текста: [ ! d4] Это опасно. Ваш пароль будет видимым для пользователей в системе в ясности. Будьте внимательны, пароли никогда не должны храниться нигде, никогда.
password = "password1"
subprocess.getstatusoutput(
"echo {} | sudo -S apt-get update".format(password))
В соответствующей заметке лучший способ запросить пользователя для пароля - использовать getpass:
import getpass
password = getpass.getpass(prompt='Password: ')
Это не будет напечатайте пароль как на экране во время ввода пользователем, как и следовало ожидать в системе Linux.
import os
import sys
import subprocess
def main():
print("hello world, we're root!")
return 0
if __name__ == '__main__':
if os.getuid():
os.system("sudo python3 " + ' '.join(sys.argv))
sys.exit(100)
else:
sys.exit(main())
Это решение вместо запроса пользователя запускает при необходимости, как root.