gpt4 book ai didi

python - Fabric / python : AttributeError: 'NoneType' object has no attribute 'partition'

转载 作者:太空狗 更新时间:2023-10-30 00:40:37 25 4
gpt4 key购买 nike

在fabric中有如下添加用户账号的功能。
~/脚本#fab -l

Python source code

Available commands:

OS_TYPE
adduser_createcmd Create command line for adding user
adduser_getinfo Prompts for user input for adding user
go The main launcher for adding user

任务

@task
@runs_once

def go():
"""
The main launcher for adding user
"""
user, uid, comment, group, Group, shell = adduser_getinfo()
execute(adduser_createcmd(user, uid, comment, group, Group, shell))

@task
@runs_once
def adduser_getinfo ():
"""
Prompts for user input for adding user
"""
with settings(warn_only=True):
df_user = "test"
df_uid = "6666"
df_comment = "Test User"
df_group = "1936"
df_Group = "sshusers"
df_shell = "/bin/bash"

#read user input or use default values
user = raw_input ("Enter Username [%s]:" %df_user) or df_user
uid = raw_input ("Enter UID # [%s]:" %df_uid) or df_uid
comment = raw_input ("Enter comments [%s]:" %df_comment) or df_comment
group = raw_input ("Enter main group [%s]:" %df_group) or df_group
Group = raw_input ("Enter supplemental group [%s]:" %df_Group) or df_Group
shell = raw_input ("Enter shell [%s]:" %df_shell) or df_shell
return user, uid, comment, group, Group, shell

@task
def adduser_createcmd (user='', uid='', comment='', group='', Group='', shell=''):
"""
Create command line for adding user
"""

#Linux uses the username for main group, solaris uses companyname
TYPE = OS_TYPE()
if TYPE == 'Linux':
Group = "2222,9999"
sudo ("useradd -u " + uid + " -c \"" + comment + "\" -G " + Group + " -m " + " -s " + shell + " " + user)
else:
env.sudo_prefix = "/usr/local/bin/sudo -S -p '%(sudo_prompt)s' "
env.shell = "bash --noprofile -l -c "
Group = "2345,500"
sudo ("/usr/sbin/useradd -u " + uid + " -c \"" + comment + "\" -g " + group + " -G " + Group + " -m " + " -s " + shell + " " + user)

我是 fabric/python 的新手,我想创建一个脚本来在多台机器上添加用户。根据机器的类型,useradd cmd 行更改不同组的 b/c。当我运行脚本时,它将在指定的第一台主机上添加用户,然后出错。我从其他答案中看到某些设置为无,但我不确定什么设置为无。这是运行输出和错误。

~/scripts #fab -H ns1,ons2 go
Enter Username [test]:
Enter UID # [6666]:
Enter comments [Test User]:
Enter main group [1936]:
Enter supplemental group [sshusers]:
Enter shell [/bin/bash]:
Traceback (most recent call last):
File "/usr/lib/python2.6/site-packages/fabric/main.py", line 743, in main
*args, **kwargs
File "/usr/lib/python2.6/site-packages/fabric/tasks.py", line 368, in execute
multiprocessing
File "/usr/lib/python2.6/site-packages/fabric/tasks.py", line 264, in _execute
return task.run(*args, **kwargs)
File "/usr/lib/python2.6/site-packages/fabric/tasks.py", line 171, in run
return self.wrapped(*args, **kwargs)
File "/usr/lib/python2.6/site-packages/fabric/decorators.py", line 139, in decorated
decorated.return_value = func(*args, **kwargs)
File "/home/jespenc/scripts/fabfile.py", line 70, in go
execute(adduser_createcmd(user, uid, comment, group, Group, shell))
File "/usr/lib/python2.6/site-packages/fabric/tasks.py", line 321, in execute
task = crawl(task, state.commands)
File "/usr/lib/python2.6/site-packages/fabric/task_utils.py", line 23, in crawl
result = _crawl(name, mapping)
File "/usr/lib/python2.6/site-packages/fabric/task_utils.py", line 14, in _crawl
key, _, rest = name.partition('.')
AttributeError: 'NoneType' object has no attribute 'partition'
Disconnecting from ns1... done.

我确定代码很丑,只是我拼凑起来学习 python 的东西。

最佳答案

你应该改变这一行:

 execute(adduser_createcmd(user, uid, comment, group, Group, shell))

到:

 execute(adduser_createcmd, user, uid, comment, group, Group, shell)

第一行告诉 Python 使用参数 (user, uid, comment, group, Group, shell) 执行 adduser_createcmd 函数并将结果传递给 执行函数。但是,Python 无法执行 adduser_createcmd,因为它是一个 Fabric 任务,应该由 Fabric 运行时在远程主机上执行。

第二行将函数 adduser_createcmd 和参数 (user, uid, comment, group, Group, shell) 作为参数传递给 execute功能。 Fabric 运行时将在您指定的远程主机上运行 adduser_createcmd 函数,传播参数。

关于python - Fabric / python : AttributeError: 'NoneType' object has no attribute 'partition' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23998243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com