使用 python 自动化 ssh 命令

Ric*_*doE 4 python linux ssh

因此,每天,我需要通过 ssh 登录到几个不同的主机并在那里运行一些维护命令,以便 QA 团队能够测试我的功能。

我想使用 python 脚本来自动执行这些无聊的任务。它会是这样的:

  • ssh主机1
  • 部署东西
  • 从主机1注销
  • ssh 主机2
  • 重新启动东西
  • 从主机2注销
  • SSH 主机3
  • 检查物品的健康状况
  • 从主机3注销
  • ...

它正在降低我的工作效率,我想知道是否有一些不错的、符合人体工程学且易于实现的东西可以以编程方式处理和运行 ssh 会话上的命令并为我输出报告。

当然,我会编写代码,我只是想要一些不是 bash 脚本的建议(因为它们不适合人类阅读)。

fav*_*tti 5

您可以通过编程方式使用以下内容:

  • 用于低级 SSH 自动化 - Paramiko
  • 对于更高级别的自动化 - Fabric

或者,如果您的活动都是围绕典型系统管理任务的自动化 - 请查看编排工具:

以 Fabric 为例,定义一个任务来登录主机并运行uname -a

from fabric import *
from fabric.api import *

env.hosts = ['localhost']

def login_to_host_and_run_uname():
    run('uname -a')
Run Code Online (Sandbox Code Playgroud)

您可以将其作为独立的结构命令运行:

[none][20:03:32] vlazarenko@alluminium (~/tests)$ fab -f fab.py login_to_host_and_run_uname
[localhost] Executing task 'login_to_host_and_run_uname'
[localhost] run: uname -a
[localhost] Passphrase for private key:
[localhost] out: Darwin alluminium 16.5.0 Darwin Kernel Version 16.5.0: Tue Jan 31 18:57:20 PST 2017; root:xnu-3789.50.195.1.1~1/RELEASE_X86_64 x86_64
[localhost] out:


Done.
Disconnecting from localhost... done.
Run Code Online (Sandbox Code Playgroud)

Fabric 还支持简单的包装器sudo()、缓存并使用 SSH 密钥等。允许在多个主机上轻松并行任务等等。