当前位置:  开发笔记 > 编程语言 > 正文

使用Python自动更新SSH配置文件的优选方法?

如何解决《使用Python自动更新SSH配置文件的优选方法?》经验,为你挑选了1个好方法。

我正在使用Fabric自动化我的一些工作流程,其中大部分涉及操纵EC2实例.

我正在寻找一种方法来保持我的.ssh/config文件是最新的,因为我经常启动并关闭EC2实例,如果我可以轻松地调试它们以进行调试等,这对我很有帮助.

我的SSH配置文件中的条目如下所示

Host ins_id
Hostname xxxxxxxx.com
User ubuntu
IdentityFile ~/.ssh/kp.pem

目前,我正在做类似以下的事情(利用Fabricboto),坦率地说这是一种垃圾方法:

def my_cool_spin_up_function(self):
    . . .
    . . .
    ssh_conf = os.path.join(homedir, '.ssh/config')
    ssh_info = '\n'.join(['Host %s'         % name,
                          'Hostname %s'     % ins.dns_name,
                          'User %s'         % env.user,
                          'IdentityFile %s' % kp_loc,
                          '\n'])
    w_com = 'echo %s | cat - %s | tee %s > /dev/null' % (ssh_info, ssh_conf, ssh_conf)
    local(w_com)

正如你所看到的,这只会在每次调用时都保留在我的配置文件之前,这很好,因为SSH在配置中为每个主机获取第一部分,但这意味着文件会逐渐增加...

我想知道是否有任何Python库允许将其.ssh/config视为更多的配置文件,其相关部分可以随时更新.例如,如果您可以简单地将其.ssh/config视为字典并抽象出文件读/写,那将是非常棒的...

谢谢你的任何建议!



1> larsks..:

我们为这种配置做的是维护配置片段的目录,可以根据需要添加/删除,然后执行以下操作:

cat .ssh/config.d/* > .ssh/config

这将按词汇顺序附加内容,这意味着排序取决于您选择如何命名文件.这使得很容易使旧配置到期,删除特定项目,以及以其他方式控制配置文件.

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有