Excilleファイルからユーザー名とパスワードを使用してユーザーアカウントを作成するpythonスクリプトを作成しています。パスワードを使用してユーザーを作成する1行のコマンドを見つけることができません。しかし、p-フラグを使用して「useradd」を試行しましたが、ログインしようとしたときにパスワードが間違っていることがわかります。「adduser」も試行しましたが、まだ方法が見つかりません。ユーザー自身がパスワードを入力する必要があるように。
私がしたいこと:できれば1行のコマンドでパスワードを使用してユーザーアカウントを作成します。
以下は、パスワードなしでユーザーアカウントを作成するときのmy pythonコードです。
#!/usr/bin/env python
import os
import openpyxl
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
Excel_file = os.open("Names_mod.xlsx", os.O_RDONLY)
wb = openpyxl.load_workbook("Names_mod.xlsx")
sheet = wb.active
max_row = sheet.max_row
for i in range(1, max_row + 1):
name = sheet.cell(row = i, column = 5)
password = sheet.cell(row = i, column = 6)
addUser = "Sudo useradd -m " + name.value
os.system(addUser)
まだテストしていませんが、ubuntuのman useradd
からすでに暗号化されているパスワードを渡す必要があるようです(そのため、以前は機能しませんでした)。
-p, --password PASSWORD
The encrypted password, as returned by crypt(3). The default is to disable the password.
Note: This option is not recommended because the password (or encrypted password) will be visible by users listing the processes.
You should make sure the password respects the system's password policy.
Cryptモジュールはpython 2および3にあります。python 3の場合、crypt.crypt(password)を使用できます。
python3
Python 3.6.7 (default, Oct 22 2018, 11:32:17)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import crypt
>>> crypt.crypt("hello")
'$6$AFKk6qImS5R6bf//$Voc7MRbOX5R2R8GvmmEHxVgx/wVorKO4y2Vuufgkph798mo/SJ6ON8vKJWj1JTsRdwNyb9oiTmHiNYGiOL4Q20'
>>>
python 2の場合、2番目の引数としてsaltも渡す必要があります。ユーザーごとに異なるsaltを選択する場合は注意してください。
だからtl; dr python3で試してみてください:
import crypt
...
for i in range(1, max_row + 1):
name = sheet.cell(row = i, column = 5)
password = sheet.cell(row = i, column = 6)
encrypted_password = crypt.crypt(password)
addUser = "Sudo useradd -m " + name.value + " -p " + encrypted_password
os.system(addUser)
編集:オリジナルのポスターから、これはpython2では機能しません、パスワードはまだ間違っています。私もpython3で実際のログインをテストしていません。 python2の場合、これは機能しません。
for i in range(1, max_row + 1):
name = sheet.cell(row = i, column = 5)
password = sheet.cell(row = i, column = 6)
encrypted_password = crypt.crypt(password, name.value)
# This doesnt work!
addUser = "Sudo useradd -m " + name.value + " -p " + encrypted_password
os.system(addUser)