【发布时间】:2018-12-17 13:55:53
【问题描述】:
我正在尝试向 sed 发送调用,但它似乎没有处理变量,当我打印它时它看起来正确,但在调用中却不正确
#!/usr/bin/python -tt
import json
from pprint import pprint
from subprocess import call
with open('admin_list.json') as data_file:
admins = json.load(data_file)
#pprint(data[0]["key"])
for admin in admins:
#print(admin["name"])
#print (" sudo sed, 1 a ${"+admin['key']+"} /home/"+admin['name']+"/.ssh/authorized_keys")
call(["sudo sed", "1 a ${"+admin['key']+"} /home/"+admin['name']+"/.ssh/authorized_keys"])
OSError: [Errno 2] 没有这样的文件或目录"
我已经更新了我的代码我没有收到错误但文件仍然没有更新
#!/usr/bin/python -tt
import json
import os
from pprint import pprint
from subprocess import call
with open('admin_list.json') as data_file:
admins = json.load(data_file)
#pprint(data[0]["key"])
for admin in admins:
call(["sudo","sed", "1 a "+admin['key']+"","/home/"+admin['name']+"/.ssh/authorized_keys"])
call(['cat','/home/'+admin["name"]+'/.ssh/authorized_keys'])
【问题讨论】:
-
使用
sudo修改别人的ssh配置听起来是个坏主意。 -
那么向服务器添加新管理员的最佳实践是什么,我正在尝试自动设置新服务器并在创建用户后自动将管理员的公钥添加到他们的授权密钥中
-
我会使用Ansible 之类的工具或其他专门为该任务构建的工具。