Последняя опера с нарушенным быстродействием и ошибками рендеринга

Есть несколько решений, которые автоматически вставляют пароль, но поскольку они видны в открытом тексте на мгновение, это опасно, и вы не должны их использовать. Некоторые методы обсуждаются здесь.

Это правильный способ запуска программы 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.

1
задан 21 December 2015 в 12:40

0 ответов

Другие вопросы по тегам:

Похожие вопросы: