python - 使用 python 自动执行 ssh 命令

标签 python linux ssh

<分区>

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

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

  • ssh 主机 1
  • 部署东西
  • 从主机 1 注销
  • ssh 主机 2
  • 重新开始
  • 从主机 2 注销
  • ssh host3
  • 检查元素的健康状况
  • 从主机 3 注销
  • ...

这正在扼杀我的工作效率,我想知道是否有什么好的、符合人体工程学且易于实现的东西可以以编程方式处理和运行 ssh session 上的命令并为我输出报告。

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

最佳答案

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

  • 用于低级 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')

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

[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.

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

关于python - 使用 python 自动执行 ssh 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42375396/

相关文章:

linux - Cloudera中的.bash_profile在哪里?

linux - 获取网络接口(interface)信息

linux - 通过 SCP 将文件从 WWW 文件夹复制到外部服务器

git - 无法在 Windows 上使用 git ://IP/repo. git

python - python 中如何验证用户输入是字母还是空格?

python - json.decoder.JSONDecodeError : Expecting value: line 2 column 1 (char 1) error

Python - 将 JSON 对象附加到现有的 JSON 对象

c - 不使用 pipe() 获取两个文件描述符

windows - 我怎样才能让 git 和 copSSH 在正确的目录中查找 key ?

python - 在 Python 的 try 语句中检查的 if 语句,需要执行代码以防出现异常