Как создать пользователя в Linux с помощью Python? Я имею в виду, я знаю о модуле подпроцесса и думал о вызове adduser и передавал сразу все параметры, но команда adduser задает некоторые вопросы, такие как пароль, полное имя, телефон и прочее. Как я могу ответить на эти вопросы, используя подпроцесс? Я видел модуль под названием pexpect в этом вопросе: Можно ли использовать Python в качестве замены Bash?. Есть ли другой стандартный модуль?
Как создать пользователя в Linux с помощью python
Ответ 1
Используйте useradd
, он не задает никаких вопросов, но принимает множество параметров командной строки.
Ответ 2
В Ubuntu вы можете использовать пакет python-libuser
Ответ 3
Вы можете просто использовать встроенные двоичные файлы, чтобы просто вызвать useradd или что-то через модуль подпроцесса. Однако я не знаю, есть ли какие-либо другие модули, которые подключаются к Linux, чтобы обеспечить такую функциональность.
Ответ 4
import os
import crypt
password ="[email protected]"
encPass = crypt.crypt(password,"22")
os.system("useradd -p "+encPass+" johnsmith")
Ответ 5
def createUser(name,username,password):
encPass = crypt.crypt(password,"22")
return os.system("useradd -p "+encPass+ " -s "+ "/bin/bash "+ "-d "+ "/home/" + username+ " -m "+ " -c \""+ name+"\" " + username)
Ответ 6
Что ж, я пытаюсь создать скрипт для автоматизации создания пользователей на серверах Linux, поэтому я сгенерировал ключи ssh на каждом сервере и создал такой код:
пользователь = teste p = 'senha123'
os.system("ssh myuser @lab sudo useradd -p" + p + "-d" + "/home/" + user+ "-m" + "-c \" "+ name+ "\" "+ пользователь)
Но я получаю ошибку:
Использование: useradd [опции] ВХОД В систему useradd -d useradd -d [опции]
Опции: -b, - -b ase -d ir Базовый каталог BASE_DIR для домашнего каталога новой учетной записи -c, - -c поле omment GECOS новой учетной записи -d, - -h ome -d ir Домашний каталог HOME_DIR новой учетной записи -d, - -d выводит по умолчанию печать или изменяет конфигурацию useradd по умолчанию -e, - -e xpiredate EXPIRE_DATE срок действия новой учетной записи -f, --inactive Период бездействия неактивного пароля новой учетной записи -g, - -g id Имя группы или идентификатор первичной группы новой учетной записи -g, - -g групп ГРУППЫ список дополнительных групп новой учетной записи -h, - -h elp отобразить это справочное сообщение и выйти -k, --skel SKEL_DIR использовать этот альтернативный каталог скелета -k, - -k ey KEY = VALUE override/etc/login.defs по умолчанию -l, - -N o -l og-init не добавляет пользователя в базы данных lastlog и faillog -m, - -c создает -h ome создает домашний каталог пользователя -m, - -N o [CN03 ] reate -h не создавайте домашний каталог ser -N, - -N o -u ser -g roup не создают группу с тем же именем, что и пользователь -o, - -N в -u nique позволяют создавать пользователей с дубликат (не -u nique) UID -p, - -p пароль PASSWORD зашифрованный пароль для новой учетной записи -r, --system создать системную учетную запись -r, - -r oot каталог CHROOT_DIR для chroot в -s, - -s ад оболочки оболочки входа новой учетной записи -u, - -u id UID ID пользователя новой учетной записи -u, - -u ser -g roup создать группу с то же имя, что и у пользователя -Z, - -s elinux -u ser SEUSER использует специальный SEUSER для отображения пользователя SELinux
512
Когда я удаляю часть 'ssh myuser @lab', скрипт работает на локальном хосте.
Может ли кто-нибудь помочь мне с этим вопросом?