这是代码的一部分:
print("User would be added sudo access")
comment = raw_input("Enter comment for sudo entry ")
group_name = raw_input("Enter sudo group name ")
edit_verdad = "vd edit -u '+module.sudo.alias.'%s' = '%s'' \
-u '+module.sudo.ent.'%s'.cmd = ALL' \
-u '+module.sudo.ent.'%s'.comment = '%s'' \
-u '+module.sudo.ent.'%s'.host = ALL' \
-u '+module.sudo.ent.'%s'.passwd = 0' \
-u '+module.sudo.ent.'%s'.user = '%s'' \
'%s'" %(group_name, options.username, group_name, comment, group_name, group_name, group_name, group_name, options.hostname)
print(edit_verdad)
变量options.hostname和options.username具有来自opt parse的正确值。
当我运行脚本时,我会得到类似的内容:
[loclhost]$ ./add_sudo_access.py -u rocky -n somehostname.xxx.yyy.com
User would be added sudo access
Enter comment for sudo entry ticket 123
Enter sudo group name sudoadm
Traceback (most recent call last):
File "./add_sudo_access.py", line 50, in <module>
'%s'" %(group_name, options.username, group_name, comment, group_name, group_name, group_name, group_name, options.hostname)
有什么想法吗?
答案 0 :(得分:0)
你有10个参数格式,但你在元组中传递了9个值。
请试试这个
edit_verdad = "vd edit -u '+module.sudo.alias.'%s' = '%s'' \
-u '+module.sudo.ent.'%s'.cmd = ALL' \
-u '+module.sudo.ent.'%s'.comment = '%s'' \
-u '+module.sudo.ent.'%s'.host = ALL' \
-u '+module.sudo.ent.'%s'.passwd = 0' \
-u '+module.sudo.ent.'%s'.user = '%s'' \
'%s'" %(group_name, options.username, group_name, comment, group_name, group_name, group_name, group_name, options.hostname, "LAST VARS")
现在你有10个%s
的10个参数。
您可以将LAST VARS
替换为您的值。或者从字符串中删除1 %s
。
答案 1 :(得分:0)
如果您仔细计算字符串中'%s'的数量,则会得到数字10.不幸的是,在%(..)
列表中,您只有9个元素。您可以获得额外的%s
,或者错过%(..)
列表中的一个值。