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

2023-12-22

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

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

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

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

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

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作为字典并抽象出文件读/写。 。 。

感谢您的任何建议!


对于此类配置,我们所做的就是维护一个配置片段目录,可以根据需要添加/删除该目录,然后执行以下操作:

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

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

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

使用 Python 自动更新 SSH 配置文件的首选方法? 的相关文章

随机推荐

  • BLL、DAL、BO、插入数据

    我需要你的建议 我正在尝试在 ASP NET 中开发一个 3 层架构 将 BBL DAL BOboj 分开 在 DAL 内部 我通过 view 收集数据 我想知道 我应该为每个视图编写另一个 BOboj 吗 我已经有一个 BOboj 类 但
  • 计算行之间的日期差异

    我有一个 data table 我想在其中标记给定组 ID 的先前条目 90 天内的条目 背景是这些是交易的买入信号 所以我不希望在 90 天的窗口内重复 因为我假设我持有该头寸 90 天 因此已经购买了一个头寸 并且我不想重新启动时钟 所
  • 在Python中从列表中获取N个最小或最大元素的快速方法

    我目前有一个很长的列表 正在使用 lambda 函数 f 进行排序 然后我从前五个元素中选择一个随机元素 就像是 f lambda x some function of x local variable my list sort key f
  • opencv中的视频文件

    我想读取视频文件 avi 或 mov 并使用 Opencv 检测运动和边缘 你能帮我编写代码吗 我想创建一个 GUI 在其中我们可以选择视频文件 然后我们可以进行图像处理opencv中的函数 如何读取视频文件 读取视频文件并将其显示在窗口上
  • Android 相机预览旋转

    根据 Android 开发者网站 android 2 2之后有这个功能 设置显示方向 调整相机预览旋转 并且根据Android开发者网站 我们可以找到以下源代码 android hardware Camera CameraInfo info
  • 初始化锯齿状数组

    我想在 C 中创建数组 10 10 10int not int 我可以写代码 int count new int 10 for int i 0 i lt 10 i count i new int 10 for int j 0 j lt 10
  • JavaScript:检查 CTRL 按钮是否被按下

    I need to check if the CTRL button was pressed while I am clicking on a control on my html page using JavaScript 我怎样才能做到
  • 以平滑的结果对 CSS 背景位置进行动画处理(子像素动画)

    我正在尝试缓慢地为 div 的背景位置设置动画 但不会出现不稳定的运动 您可以在这里看到我当前努力的结果 http jsfiddle net 5pVr4 2 http jsfiddle net 5pVr4 2 webkit keyframe
  • CoffeeScript:在函数调用中扩展数组

    在 Ruby 中 我可以调用使用数组元素作为位置参数的方法 如下所示 method fixed arg1 fixed arg2 array of additional args 这里的 运算符将数组扩展到位 我试图在 CoffeeScrip
  • Intellij IDEA 找到匹配的标记

    是否有快捷方式或我可以单击以查找标记标签的匹配标签并将焦点 光标移至那里 例如 p span span p div div 如果我的光标位于结束位置标签 我希望 IDEA 带我去参加开幕式 tag Ctrl goes to the open
  • Google 地图:DirectionService 返回 OVER_QUERY_LIMIT 响应

    我正在使用 google maps DirectionsService 来获取两点之间的路线 该代码在过去 8 个月内一直有效 但是 从过去的几天来看 DirectionService 路由调用返回 OVER QUERY LIMIT 响应状
  • jQuery 选择器中允许使用哪些字符?

    我正在使用 jQuery 平滑滚动到我网站上的某些锚点 锚点是以编程方式创建的 因此它们可以包含一些德语变音符号 例如 或其他 unicode 字符 例如 等 该函数使用哈希来选择哈希所引用的元素 Smooth scroll to anch
  • 哪一行的值最高?

    我有多个提名人和民意调查的选举结果表 我需要确定每次民意调查中哪位提名人获得最多票数 以下是表中数据的示例 PollID NomineeID Votes 1 1 108 1 2 145 1 3 4 2 1 10 2 2 41 2 3 0 我
  • Android ListView 子视图 setEnabled() 和 setClickable() 不执行任何操作

    我正在做一些AsyncTask用户单击我的项目后工作ListView 我想禁用该项目 这样它就不能被单击两次 我已经简化了单击侦听器以仅包含此方法 但它仍然对我没有任何作用 视图看起来相同 并且它让自己再次被愉快地单击 这让我很烦恼 pub
  • 如何在 Swift 中传递和获取多个 URL QueryItem?

    好的 我正在 iMessage 应用程序中工作 并尝试从此处所选消息中解析超过 1 个 url 查询项 我已成功在查询中获取 发送 1 个值 override func willBecomeActive with conversation
  • 使用 Boost.regex 从目录打印 .pdf 文件名

    这是我的代码 path Path e Documents boost regex reg pdf for recursive directory iterator it Path it recursive directory iterato
  • 在Python中对pandas中的数据框进行分箱[重复]

    这个问题在这里已经有答案了 给定 pandas 中的以下数据框 import numpy as np df pandas DataFrame a np random random 100 b np random random 100 id
  • 如果使用 $dirty 和 $pristine 对表单进行任何更改,则不允许进行导航

    如果任何表单发生更改 我会尝试停止在我的应用程序上导航 并尝试在不保存更改的情况下进行导航 我想显示一个对话框来显示是否保存导航或放弃或取消导航操作 我正在使用角度用户界面路由 https github com angular ui ui
  • 在 Windows 上如何直接从物理内存读取?

    在C或C Windows 中 如何通过给出物理 非虚拟 地址来读取RAM 这意味着无需通过虚拟内存系统 mmu 表 并且特定于一个进程 我已经知道 APIReadProcessMemory http msdn microsoft com e
  • 使用 Python 自动更新 SSH 配置文件的首选方法?

    我在用着Fabric自动化我的一些工作流程 其中大部分涉及操作 EC2 实例 我正在寻找一种方法来保持我的 ssh config文件是最新的 因为我经常启动和关闭 EC2 实例 如果我可以轻松 ssh 到它们进行调试等 这对我非常有帮助 我