Linux 相当于 PowerShell 的“一对多”远程处理

Linux 相当于 PowerShell 的“一对多”远程处理

我来自 Windows 管理部门,想更深入地了解 Linux (Debian)。我在网上搜索(没有找到)无法回答的最紧迫的问题之一是:如何实现所谓的“一对多”远程处理,就像 Windows 的 PowerShell 中那样?

为了将其分解为基础知识,我会说:

我对Linux的看法:

  • 我可以 ssh 进入服务器并输入命令
  • 我得到结果了。对于 10 台服务器的环境,我必须编写一个(perl/python?)脚本为每台服务器发送命令?

我在 Windows 上的经验:

  1. 我输入命令,然后使用“调用命令”,我可以将其“发送”到一堆服务器(可能来自文本文件)以同时执行并获取结果(作为进一步工作的对象)。

  2. 我什至可以建立多个会话,连接在后台保持,并有选择地向这些会话发送命令,并根据需要进行远程输入和输出。

(听说过厨师、木偶等,是这样的吗?)


Update 2019:
经过多次尝试后 - 我建议雷克斯(看下面这条评论) - 简单的设置(实际上它只需要 ssh,不需要其他任何东西)和使用(如果你知道一点点珀尔它甚至更好,但它是可选的
雷克斯(化)你可以做特别指定命令并将其推进到真实的配置管理(...意思是:它首先是一个 CM,但也适合临时任务)该网站似乎已经过时,但目前(截至 01/2019)它正在积极开发中,并且 IRC 频道也很活跃。

随着 Windows 的新打开ssh还有更多的可能性

你可以试试: rex -u user -p password -H 192.168.1.3 -e 'say run "hostname"'

答案1

概括

  • Ansible 是一个 DevOps 工具,是 PowerShell 的强大替代品
  • RunDeck 作为图形界面很方便
  • 有些人一起运行 RunDeck+Ansible

集群sh

对于初学者来说,要向多个服务器发送远程命令,我建议集群sh

clusterssh在 Debian 中安装:

apt-get install clusterssh

其他clustersh 教程:

ClusterSSH 是标准 Linux 工具(如 XTerm 和 SSH)的 Tk/Perl 包装器。因此,它几乎可以在任何存在库的 POSIX 兼容操作系统上运行 — 我已经在 Linux、Solaris 和 Mac OS X 上运行过它。它需要 Perl 库 Tk(Debian 或 Ubuntu 上的 perl-tk)除了 xterm 和 OpenSSH 之外,还有 X11::Protocol(Debian 或 Ubuntu 上的 libx11-protocol-perl)。

安西布尔

至于用于多个系统管理的远程框架,安西布尔是 Puppet 的一个非常有趣的替代品。它更精简,并且不需要专用的远程代理,因为它通过 SSH 工作(它也已被 RedHat 收购)

Playbooks 比命令行选项更详细。

但是,要开始使用 Ansible,您需要进行简单的安装并设置客户端列表文本文件。

之后,要在所有服务器中运行命令,就像执行以下操作一样简单:

ansible all -m command -a "uptime"

输出的格式也非常好,并且按规则/服务器分开,并且在后台运行时可以将其重定向到文件并稍后查阅。

您可以从简单的规则开始,随着您在 Linux 中的成长,以及您的基础设施变得越来越大,Ansible 的使用将会变得更加有趣。因此,它的作用比 PowerShell 多得多。

举个例子,我写了一个非常简单的用于升级 Linux 服务器的 Playbook:

---
- hosts: all
  become: yes
  gather_facts: False
  tasks:
   - name: updates a server
     apt: update_cache=yes
   - name: upgrade a server
     apt: upgrade=full

它还定义了许多模块,使您可以轻松编写全面的策略。

模块索引 - Ansible 文档

它还拥有一个有趣的官方中心/“社交”存储库网络,用于搜索社区已经制定的可靠政策。安塞布尔银河

Ansible 也被广泛使用,你会在 github 上找到很多项目,比如我自己的这个项目FreeRadius 设置

虽然 Ansible 是一个免费的开源框架,但它也有一个付费的 Web 面板界面,安西布尔塔尽管许可相当昂贵。

如今,RedHat收购后,tower也有了开源版本,称为AWX

作为奖励,Ansible 还能够管理 Windows 服务器,尽管我从未使用过它。

它还能够管理网络设备(路由器、交换机和防火墙),这使其成为一个非常有趣的自动化统包解决方案。

如何安装 Ansible

伦德克

再次强调,对于更易于使用但不如 Ansible 强大的远程框架,我确实推荐伦德克

它是一个非常强大的多用户/登录图形界面,您可以在其中自动执行许多常见的日常任务,甚至可以向系统操作员或帮助台人员提供淡化的视图。

运行命令时,它还会为您提供按服务器/任务细分的输出窗口。

它可以在后台无缝运行多个作业,并允许您稍后查看报告和输出。

运行甲板图像

如何安装 RunDeck

请注意,有人将 Ansible+RunDeck 作为 Web 界面运行;并非所有案例都适合这样做。

不言而喻,使用 Ansible 和/或 RunDeck 可以被解释为基础结构文档的一种形式或一部分,并且随着时间的推移,可以复制和改进操作/食谱/剧本。

最后,谈到中央命令服务器,我将创建一个专门用于该任务的服务器。实际上,技术术语是跳箱。如果设置正确,“跳箱”可以提高安全性

答案2

如果您想以交互方式执行此操作,可以使用terminator它允许将命令广播到多个终端。

在此输入图像描述

看:如何同时在多个选项卡/shell 中运行相同的 linux 命令?

答案3

您还可以使用pssh(或parallel-ssh),它是一个连接到主机列表并在所有主机上并行执行命令的 SSH 客户端:

$ parallel-ssh -i -H "host1 host2" uname -a
[1] 11:37:12 [SUCCESS] host2
Linux host2 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[2] 11:37:12 [SUCCESS] host1
Linux host1 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

答案4

如果您使用 KDE,还有另一种方法。
- 打开 Konsole 窗口。
对于要与之通信的每个服务器:
- 打开一个选项卡
- 与服务器建立 ssh 连接
在“编辑”菜单中,选择“复制输入”到“所有选项卡”

您在该选项卡中输入的每个命令都将被复制到所有服务器。
您可以从一个选项卡切换到另一个选项卡以查看不同的结果。

注意:我的菜单标签(带引号)可能是错误的,因为我不使用英文版的 KDE

相关内容