Fabric/Python:AttributeError:“NoneType”对象没有属性“partition”

2023-12-20

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 命令行会更改不同组的 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))

to :

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Fabric/Python:AttributeError:“NoneType”对象没有属性“partition” 的相关文章

  • Pythonanywhere 安装并导入新模块

    我是 Pythonanywhere 的新手 想要安装 soundcloud Python 模块 我打开了 Bash 控制台并给出了pip install user soundcloud命令 它似乎已经安装 正如我使用时在模块列表中看到的那样
  • 如何将字典转换为字符串

    我正在尝试使用提供的解决方案here https stackoverflow com questions 5192753 how to get the number of occurrences of each character usin
  • 为什么 statsmodels 和 R 的逻辑回归结果不同?

    我正在尝试比较 python 的 statsmodels 和 R 中的逻辑回归实现 Python版本 import statsmodels api as sm import pandas as pd import pylab as pl i
  • 如何选择单选按钮?

    我在用mechanize我正在尝试从单选按钮列表中选择一个按钮 该列表有 5 项 如何选择第一项 文档没有帮助我 gt gt gt br form
  • pandas 系列值之间的过滤

    If s is a pandas Series http pandas pydata org pandas docs stable dsintro html series 我知道我可以这样做 b s lt 4 or b s gt 0 但我做
  • 有没有办法拥有租户特定的 JWT 令牌

    我目前正在开发一个 SPA 应用程序 角度 后端使用 Python Flask API 该应用程序将支持多个租户 我对安全概念有点挣扎 我目前正在使用 jwt extend 颁发的 JWT 令牌对所有租户都有效 我当然可以从令牌中获取用户
  • 会话cookie太大烧瓶应用程序[重复]

    这个问题在这里已经有答案了 我正在尝试使用会话 本地 加载某些数据 并且它已经工作了一段时间 但是现在我收到以下警告 并且不再加载通过会话加载的数据 b session cookie 太大 该值是 13083 字节 但是 标头需要 44 个
  • time.sleep - TypeError:需要一个浮点[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 time sleep 2 TypeError a float is required 我该如何解决 我不确定我应该在这里做什么 您
  • 如何在 matplotlib 图中禁用 xkcd?

    您可以通过以下方式打开 xkcd 风格 import matplotlib pyplot as plt plt xkcd 但如何禁用它呢 I try self fig clf 但这行不通 简而言之 要么使用 Valentin 提到的上下文管
  • While 在范围内循环用户输入

    我有一些代码 我想要求用户输入 1 100 之间的数字 如果他们在这些数字之间输入一个数字 它将打印 Size input 并打破循环 但是 如果他们在外部输入一个数字1 100 它将打印 大小 输入 并继续向他们重新询问一个数字 但我遇到
  • Pythonwinsound,ASYNC 标志不起作用?

    我正在使用 python 3 5 我试图在继续执行脚本的同时播放声音 根据https docs python org 3 5 library winsound html https docs python org 3 5 library w
  • 将多个 csv 文件连接成具有相同标头的单个 csv

    我目前正在使用以下代码导入 6 000 个 csv 文件 带标题 并将它们导出到单个 csv 文件 带单个标题行 import csv files from folder path r data US market merged data
  • Keras CNN 回归模型损失低,准确度为 0

    我在 keras 中遇到这个 NN 回归模型的问题 我正在研究一个汽车数据集 以根据 13 个维度预测价格 简而言之 我已将其读取为 pandas 数据帧 将数值转换为浮点数 缩放值 然后对分类值使用 one hot 编码 这创建了很多新列
  • 如何在 django-rest-framework 查询集响应中添加注释数据?

    我正在为查询集中的每个项目生成聚合 def get queryset self from django db models import Count queryset Book objects annotate Count authors
  • python 3 configparser.read() 在给定不存在的文件时不会引发异常

    当我尝试使用 configparser read 读取不存在的文件时 我认为它应该引发异常 事实并非如此 它返回一个空列表 显然 我可以测试空列表并引发异常 在我看来 如果 configparser read 引发 FileNotFound
  • Mxnet - 缓慢的数组复制到 GPU

    我的问题 我应该如何在 mxnet 中执行快速矩阵乘法 我的具体问题 数组复制到 GPU 的速度很慢 对此我们能做些什么呢 我创建随机数组 将它们复制到上下文中 然后相乘 import mxnet as mx import mxnet nd
  • 如何导入 boto3 ssm ParameterNotFound 异常?

    我想import the exception当一个boto3 ssm找不到参数get parameter 我正在尝试添加一些额外的内容ssm的功能moto图书馆 但我现在很困惑 gt gt gt import boto3 gt gt gt
  • 删除aws beanstalk上的uuid python包

    这是针对所提出问题的后续帖子 问题here https stackoverflow com questions 44421761 flask beanstalk deployment errors 以防万一对其他人有用 自从第一篇文章以来
  • Python DNS服务器IP地址查询

    我正在尝试使用 python 获取 DNS 服务器 IP 地址 要在 Windows 命令提示符下执行此操作 我将使用 ipconfig 全部 如下所示 我想使用 python 脚本做同样的事情 有什么方法可以提取这些值吗 我成功提取了设备
  • 我可以在某些网格中打印带有颜色的 pandas 数据框吗?

    我有一个 pandas DataFrame 我想突出显示一些数据 例如 In 1 import pandas as pd In 2 import numpy as np In 3 df pd DataFrame np reshape ran

随机推荐