почему питон getpass и getuser не могут сменить пользователя? - PullRequest
0 голосов
/ 02 апреля 2019

Я должен автоматизировать различные задачи ОС, и ниже приведена последовательность:

1) change user to "access"
2) cd <location>
3) execute command to create debian pkg
4) export the debian pkg to 3 different servers
5) install the debian pkg on all the 3 servers.

Я написал программу на python, чтобы протестировать мои первые 2 шага, и у меня не получается много времени.Я использую модули «getpass» и «OS» для выполнения своих задач.Ниже приведен пример кода:

import os
import getpass

# os.popen('sudo root', 'r', 1)


def login():
    user = input("Username [%s]: " % getpass.getuser())
    if not user:
        user = getpass.getuser()

    pprompt = lambda: (getpass.getpass(), getpass.getpass('Retype password: '))

    p1, p2 = pprompt()
    while p1 != p2:
        print('Passwords do not match. Try again')
        p1, p2 = pprompt()

    return user, p1


psswd = login()
print("CHANGED THE USER")
print(" ")
print("the id of the user is:", os.system('whoami'))
print(" ")
print("The current working directory is:", os.getcwd())
print(" ")
os.chdir('/var/tmp')
print("The new working directory is:", os.getcwd())

Чтобы проверить, выполняется ли код на моем локальном компьютере, при выполнении кода я получаю приглашение консоли для ввода имени пользователя и пароля в консоли IDE, как показано ниже

Username [amitesh]:

Затем я ввожу "sudo su -"

и пароль для пользователя "amitesh".Итак, теперь я получаю вывод ниже на моей консоли IDE

CHANGED THE USER

amitesh
the id of the user is: 0

The current working directory is: /Users/amitesh/PycharmProjects/Automation/Databases

The new working directory is: /private/var/tmp

Process finished with exit code 0

Из вышеприведенного вывода очень ясно, что программа не может изменить пользователя на «root».

Пожалуйста, помогите мне найти мои ошибки.

Спасибо

...