快速批量运行命令

Ansible 是 redhat 提供的自动化运维工具,它是 Python编写,可以通过 pip 安装。

pip install ansible

它通过任务(task)、角色(role)、剧本(playbook) 组织工作项目,适用于批量化系统配置、软件部署等需要复杂操作的工作。

但对于批量运行命令的场景,ansible 就显得笨重和缓慢。

下面以在4台主机上计算/etc/hosts的md5值为例来说明。

ansible使用示例

time ansible compute -i host.invetory -f 4 -m shell -a "md5sum /etc/hosts"

compute 为主机定义文件中的主机组名称

-i 指定主机定义文件

-f 指定并发度为4

-m 指定python模块

-a 运行参数,即通过shell模块要运行的命令

注:需要事先设置好ssh免密登录。

总用时2.6 秒,比较慢。

我们可以采用其它的工具,比如 pdsh 或者 pssh。这两个工具都在 epel 源中,可以通过 yum 安装。

yum install -y pdsh*

yum install -y pssh

pssh使用示例

time pssh -H "ic-cmp01 ic-cmp02 ic-cmp03 ic-cmp4" -p 4 -i md5sum /etc/hosts

-H 指定主机列表,但不支持缩写方式;主机数量大时不太友好,但可写到文件中,通过 -h 指定;

-p 指定并发数量

-i 显示输出

输出示例

总用时 0.31秒,比ansible快8倍左右。

pdsh使用示例

time pdsh -R ssh -f 4 -w ic-cmp01-4 md5sum /etc/hosts

-R 指定连接主机的方式,这里使用 ssh ,需要事先设置好免密登录。

-f 指定并发数量。

-w 指定要连接的主机;可以使用缩写方式,这里指定了4台主机;也支持主机组 -g

md5sum /etc/hosts 是要在远程主机上运行的命令。

输出示例

默认将主机上的标准输出和标准错误同时显示,并标示出来自哪一台主机。

仅用时0.29秒,比ansible快了近10倍。

个人感觉 pdsh 的输出更易读一些,特别是主机数量特别多时,而且pdsh还提供了输出整合的功能。

time pdsh -R ssh -f 4 -w ic-cmp01-4 md5sum /etc/hosts | dshbak -c

将上面的命令通过管道给 dshbak -c 进行整合后的输出如下:

是不是可读性更好了?

相关推荐
troy1285 小时前
Python 基础语法(六):函数与模块、文件操作、异常处理
开发语言·python
小叶肥辉5 小时前
LangChain链和LangGraph图的学习笔记【四】——(1)调用方法:invoke(2)提示语模板:PromptTemplate
python·langchain·prompt
小兔崽子去哪了5 小时前
深度学习 2 / CNN 神经网络
后端·python
Allstar_435 小时前
全星研发项目管理APQP系统支持本地/私有云,开放API对接ERP/MES/PLM/OA,分级权限、版本追溯、ECN闭环,低代码配置,便于研发质量一体化扩展
运维
weixin_440730505 小时前
队列QUEUE介绍+类型示例(先进先出、后进先出、优先级高先出、双端进入、生产者+消费者线程)
python·线程·queue
这是程序猿5 小时前
Java线程池深度剖析:源码原理、核心参数、任务调度与生产调优实战
java·开发语言·python
Web3&Basketball6 小时前
ChatGPT 路由自证:跨客户端实测对照
python·大模型·agent·推理·推理优化
Patrick在香港6 小时前
Claude 工作提醒自动化:香港天文台四个接口三个「更新时间」,警告到期了却还在生效
python·api·claude·数据抓取·香港
科技研学社6 小时前
一次性内裤制造的工艺痛点与自动化工艺改良方案
人工智能·自动化
用户8356290780516 小时前
Python 实现 Word 文档域的插入与管理
后端·python