如果我在ubuntu服务器上创建名为Talbot的用户,我可以通过以sudo
运行此命令来手动更改此用户目录的所有权chown talbot:talbot -R /home/talbot
我尝试通过
在Fabric python脚本的最后一行做同样的事情 sudo("chown %s:%s -R /home/%s" % new_user,new_user, new_user)
然而,它一直给我这个错误
sudo("chown %s:%s -R /home/%s" % new_user, new_user,new_user)
TypeError: not enough arguments for format string
你能解释一下这个错误发生的原因吗?
def user_add(new_user, passwd=False):
"""Add new user"""
with settings(hide('running', 'stdout', 'stderr'), warn_only=True):
# if is_host_up(env.host):
if not passwd:
passwd = generate_passwd()
if not sudo("useradd -p $(echo '%s' | openssl passwd -1 -stdin) %s" % (passwd, new_user)).failed:
run('echo "{user} ALL=(ALL:ALL) ALL" >> /etc/sudoers'.format(user=new_user))
if env.host== '107.XX.XX.XXX':
sudo("mkdir /home/%s" % new_user, warn_only=True)
sudo("chown %s:%s -R /home/%s" % new_user,new_user, new_user)
答案 0 :(得分:2)
您的格式字符串的所有参数都需要包含在一个元组中。而不是
sudo("chown %s:%s -R /home/%s" % new_user,new_user, new_user)
你应该使用
sudo("chown %s:%s -R /home/%s" % (new_user,new_user, new_user))