我是Python(和stackoverflow:D)的新手,在学校里,我们得到了创建(普通用户并具有sudo权限)和删除Linux系统上的用户的任务(在本例中为Ubuntu 18.04)。我正在使用Pycharm进行编码,并使用Python 3.7作为解释器。 我已经搜索了答案,但找不到答案。 因此,我不确定是什么导致了此问题,因此对可能造成混淆的标题感到抱歉。 我会尽力解释。
我想问一个问题,用户是否要创建或删除用户。
def useradministration():
parameters.question_user ##input("User add (a) or delete (d)?: ").strip()
...之后:
#a for adding an user
if parameters.question_user == 'a':
def usercreate():
parameters.question_role ##input("Role for the user: administrator (a) or normal user (n)? ").strip()
# n for normal user - creating via useradd
if parameters.question_role == 'n':
.....
# a for administrator - same as a but with usermod for sudo
elif parameters.question_role == 'a':
.....
#error if its neither n or a
else:
print("Error: wrong specification for role.")
usercreate()
#d for deleting an user
elif parameters.question_user == 'd':
def userdelete():
........
#error if its neither a or d
else:
print("Error: wrong specification for user.")
第一个问题。 输出示例:
User add (a) or delete (d)?: r
Role for the user: administrator (a) or normal user (n)? u
Select username:g
Error: wrong specification for user.
它给出正确的输出,并带有“错误:用户的规范错误”。 -但是,如果第一个条件不正确,为什么仍要遍历所有问题?我的脚本有问题还是输入比较不起作用,还是其他原因?
User add (a) or delete (d)?: r
Error: wrong specification for user.
那是我所希望的输出。
另一个要删除的问题。我们必须将所有内容都记录到一个文件中。我的用户删除看起来像这样:
def userdelete():
parameters.username ##username = input("Select username:")
#try to delete if it exists, print and log it
try:
os.system("sudo userdel -r " + parameters.username)
print("User " + parameters.username + " deleted.")
logging.info("User " + parameters.username + " deleted.")
#exception for when user doesn't exist, just printing and logging it
except OSError:
print("User " + parameters.username + " doesnt exist.")
logging.critical("User " + parameters.username + " doesnt exist.")
pass
userdelete()
示例输出:
User add (a) or delete (d)?: d
Role for the user: administrator (a) or normal user (n)? o
Select username:abc
User abc deleted.
userdel: user 'abc' does not exist
该脚本实际上是在删除用户(如果存在)。 但是为什么要问角色问题,如果用户不存在(因为abc不存在),为什么不使用except语句呢?在这种情况下我使用错了吗?
我希望有人能帮助我。
谢谢。
编辑 parameters.question_user来自另一个名为parameter.py的.py文件(我已将其导入到main.py文件中),并且仅包含
question_user = input("User add (a) or delete (d)?: ").strip()
question_role = input("Role for the user: administrator (a) or normal user (n)? ").strip()
username = input("Select username:")