在多台服务器上运行相同命令

news2024/10/7 8:30:49

文章目录

  • PSSH
    • 安装
    • 使用
      • (1)、定义一个文件,写入需要操作的机器,如pssh-hosts
      • (2)、pssh执行命令
      • (3)、参数含义
      • (4)、pscp从96.54拷贝文件到其他机器
      • (5)、pslurp从其它机器下载文件到本地
      • (6)、pnuke 杀死远程主机上的进程
  • ansible
    • 安装
    • 使用
      • (1)、安装完后,在/etc/ansible/目录下生成三个主要的文件或目录
      • (2)、添加节点,在/etc/ansible/hosts文件中添加需要被管理的服务器节点
      • (3)、建立互信环境
      • (4)、测试连通性
      • (5)、处理[WARNING]: sftp transfer mechanism failed
      • (6)、ansible命令构成
      • (7)、playbook
  • 自定义脚本

PSSH

	全称是parallel-ssh,基于Python编写的并发在多台服务器上批量执行命令的工具。包括pssh,pscp,prsync,pnuke和pslurp。该项目包括psshlib,可以在自定义应用程序中使用。它相当于ansible的简化版,执行起来速度比ansible快,支持文件并行复制,远程命令执行,杀掉远程主机上的进程,杀手锏是文件并行复制。
	主要用法:
		pssh命令    在远程主机上执行本地命令或者脚本
        pscp命令    将本地文件拷贝至多个远端主机
        pslurp命令  从多台远程机器拷贝文件到本地
        pnuke命令  在远端主机杀进程
        prsync命令  使用rsync协议从本地计算机同步到远程主机

安装

yum install epel-release
yum install pssh

使用

(1)、定义一个文件,写入需要操作的机器,如pssh-hosts

vim pass-hosts

然后写入需要控制的机器

192.168.96.54:22
192.168.96.60:22
192.168.96.244:22

(2)、pssh执行命令

pssh -h pssh-hosts -l root -i "echo "Hello World""
# 因为已经是互信环境,所以不需要输入密码

在这里插入图片描述

(3)、参数含义

-h -–hosts 主机文件列表,内容格式[user@]host[:port]
-l -–user 登录使用的用户名
-p -–par 并发的线程数【可选】
-t --timeout 超时时间【可选】
-v --verbose 输出详细信息【可选】

仅包含在pslurp里的

-L --localdir 下载文件的保存目录

(4)、pscp从96.54拷贝文件到其他机器

pscp.pssh -h pssh-hosts -l root pssh-hosts /tmp
# 拷贝pssh-hosts文件到其他机器的/tmp目录
# pscp从本地拷贝到远程,所以先写本地的某个文件或目录,再写远程的目录

在这里插入图片描述

(5)、pslurp从其它机器下载文件到本地

	例如,先创建一个脚本,并将其传入到每个机器上,获取每个机器的hostname并写入到一个文件,然后将每个机器上的该文件下载到本地。

准备:
在这里插入图片描述

在使用pssh执行脚本后,将每个机器的hostname写入到本地的某个文件了
在这里插入图片描述
最后使用pslurp将其拷贝到本地的某个目录
在这里插入图片描述

pslurp -h pssh-hosts -L /a /tmp/1.txt 1.txt
# 将每个节点上的/tmp/1.txt下载到本地的a目录里
# pslurp从远程下载到远程,所以先写远程的某个文件或目录,再写本地的目录

在这里插入图片描述

(6)、pnuke 杀死远程主机上的进程

例如杀死每个机器的nginx进程
查看每个节点的nginx的状态
在这里插入图片描述
执行命令

pnuke -h pssh-hosts nginx

查看效果
在这里插入图片描述
(7)、prsync跟rsync使用差不多,略过。

ansible

安装

先搜索仓库里的ansible源
在这里插入图片描述
然后安装centos提供的ansible源

在这里插入图片描述
然后每个机器安装ansible。(其实只需在管理主机上安装,都安装只是为了方便换其他机器后使用)
在这里插入图片描述
在这里插入图片描述

使用

(1)、安装完后,在/etc/ansible/目录下生成三个主要的文件或目录

在这里插入图片描述

  • ansible.cfg: Ansible的配置文件
  • hosts:登记被管理的主机
  • roles:角色项目定义目录,主要用于代码复用

(2)、添加节点,在/etc/ansible/hosts文件中添加需要被管理的服务器节点

pssh -h pssh-hosts -i "printf '[cluster]\n192.168.96.54\n192.168.96.60\n192.168.96.244\n' > /etc/ansible/hosts"
pssh -h pssh-hosts -i "cat /etc/ansible/hosts"

在这里插入图片描述
这里将三个节点放入cluster组中,后面执行命令时可指定针对某个组执行。

(3)、建立互信环境

ssh-keygen -t rsa -b 4096
ssh-copy-id root@192.168.96.54

(4)、测试连通性

针对cluster组里的机器执行ping命令

ansible cluster -m ping

在这里插入图片描述

若要针对所有组的机器执行命令,则使用all即可。

ansible all -m ping

在这里插入图片描述

(5)、处理[WARNING]: sftp transfer mechanism failed

  • 修改sshd_config
    改sshd_config文件,取消注释Subsystem
    在这里插入图片描述

  • 修改ansible配置文件,添加scp_if_ssh=True
    在这里插入图片描述
    在执行时已经没有warning了
    在这里插入图片描述

(6)、ansible命令构成

ansible的命令格式为, ansible 主机群组名 -m 命令模块名 -a “批量执行的操作”

常用模块

  • ping模块

  • command/shell模块,两者区别是shell支持管道,command不支持管道操作

    ansible all -m  command -a 'hostname'
    

    在这里插入图片描述

    ansible all -m  shell -a 'hostname | grep 54'
    

    在这里插入图片描述

  • script脚本模块

ansible all -m  script -a '/tmp/test.sh'
# 无需将脚本拷贝到其他节点

在这里插入图片描述

  • copy模块,相当于scp
ansible all -m copy -a "src=/tmp/test.sh dest=/tmp/"
# 将本节点的该路径的脚本拷贝到其他机器的tmp目录下

在这里插入图片描述
在这里插入图片描述

  • user/group模块
  • git模块
  • file模块
  • service模块
  • yum模块
  • cron模块

其他模块不再一一列举,可通过ansible-doc 模块名查看具体用法
例如: ansible-doc yum
在这里插入图片描述

(7)、playbook

playbook即剧本,由一个或多个play组成,play的功能就是为归为一组的主机编排要执行的一系列task,其中每一个task就是调用Ansible的一个命令模块。

playbook的核心元素包括:

  • hosts:执行任务的主机,可以是主机组
  • tasks:要执行的任务列表
  • variables:内置变量或自定义的变量
  • templates:使用模板语法的文件,通常为配置文件
  • handlers:和notify结合使用,由特定条件触发,一般用于配置文件变更触发服务重启
  • tags:标签,可在运行时通过标签指定运行playbook中的部分任务
  • roles:定义可重用的任务和变量集合。

没用过。

参考:https://www.cnblogs.com/spec-dog/p/12736447.html

自定义脚本

一个最简单的脚本的方式

#!/bin/bash

# 要执行的命令
COMMAND="ls -l"

# 集群中所有节点的 IP 地址
NODES=("192.168.1.101" "192.168.1.102" "192.168.1.103")

# 在所有节点上执行命令
for NODE in "${NODES[@]}"
do
    echo "Executing command on node $NODE..."
    ssh $NODE $COMMAND
done

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/683436.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

兼容性测试如何提高网站的性能?

随着互联网的持续发展,越来越多的公司和组织都开始关注网站的性能问题。一个高效的网站不仅可以提高用户满意度,促进业务的发展,还可以提高搜索引擎的排名,为公司带来更多的流量和收益。而兼容性测试是提高网站性能的关键之一&…

SECS协议学习

1.SECS介绍 SEMI(国际半导体协会)为了方便工厂系统与设备沟通而建立的一种通信标准 2.SECS常用功能 2.1.设备向工厂系统报告设备状态(自动、暂停、初始化、报警,特殊事件:如门开启等) 2.2.远程控制设备&#xff0…

实录分享 | Alluxio Operator一体化部署方案

今天给大家分享的内容是 Alluxio Operator的一体化部署方案。我会将内容分成 4 个部分来给大家讲解。 首先,介绍 Kubernetes 容器化部署和当前所面临的挑战。 然后,引入operator的概念,介绍当前业界关于Kubernetes 容器化部署问题的主流解决…

好用的web可视化报表工具

随着数字化程度加深,数据可视化成为数据分析中不可或缺的重要组成部分,可视化图表能非常直观地为管理者和决策者提供有效的企业信息,因此找到一款好用的数据可视化工具尤为重要! 中国式报表设计 报表可视化操作界面,…

Docker容器日志管理详解

1. 简介 Docker容器日志是指容器在运行过程中产生的各种日志信息,包括错误、警告、信息等。Docker将所有容器的日志统一管理,方便用户对容器进行监控、故障排查和性能分析。 1.1 什么是Docker容器日志 Docker容器日志是容器在运行过程中产生的各种日志…

推荐5款非常小巧精致的免费软件

今天继续分享5个超实用的小工具,都是非常小巧精致的免费软件。 开源三维建模——Blender ​ Blender是一个开源的三维建模和动画软件,可以用于制作游戏、电影、广告等。它拥有丰富的建模、雕刻、纹理、渲染、动力学、模拟等功能,以及内置的…

Sequential用法

目录 1.官方文档解释 1.1原文参照 1.2中文解释 2.参考代码 3.一些参考使用 3.1生成网络 3.2 感知机的实现 3.3组装网络层 1.官方文档解释 1.1原文参照 A sequential container. Modules will be added to it in the order they are passed in the constructor. A…

数据治理的关键能力是什么?如何发力?

工业时代历经百年形成的全球经济体系、治理体系,在突如其来的新冠疫情冲击和数字技术高速发展下,开始加速变革。从社会经济系统来看,未来人类社会将向“实体数字”的二维空间发展。数字经济将是基于这个二维空间而建立的新经济模式&#xff0…

做好新媒体宣传的工作总结

新媒体宣传工作总结1 不得不说时间过的真快,自己在_公司_部工作已有两多月了。这段时间是我人生的一个重大转折点,一个在校生成为一名社会人员的转型期,在这期间我失去了,也收获了,更多的是我成长了。 走出校园我还懵懵…

一文彻底教你如何mysql8驱动 jdbc下载

这里以mysql-connector-java-8.0.29.jar为例 打开MySQL官网,点击DOWNLOADS,如下图 进入页面后,滚动到下方,点击 MySQL Community (GPL) Downloads 进入后,点击Connector/J 选择项 这里选择的是zip包&#xff0c…

OpenMMLab OpenMMLab mmdeploy v1.1.0模型部署(一)

一、MMDepoly整体框架 模型部署是指把机器学习训练生成的算法模型,部署到各类云、边、端设备上去, 并使之高效运行,从而将算法模型实际地应用到现实生活中的各类任务中去,从而实现AI的智能化转型。 目前,我们已经支持…

windows下进行c++开发环境的搭建以及使用cmake跨平台工具进行c++代码的开发

windows下使用cmake进行c程序的开发 要求环境条件简单使用cmake 要求环境条件 安装mingw64并配置环境变量 检查命令 gcc - v安装cmake并配置环境变量 检查命令 cmake – version安装vscode安装vscode开发插件,cextension pack(这是一系列整合包) tips: 腾讯微云min…

el-popover修改宽度

popper-class可以修改其样式。 写法&#xff1a; <el-popover v-if"showNav false" popper-class"el-popover-self"><template #reference><el-icon class"recorder_open"><DArrowLeft style"color: #ffb814"/&…

23年测试前景?测试开发?开发测试框架你懂多少?

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 基本概念 库&…

接口文档这几点我们一定要注意

我们在做开发的时候&#xff0c;经常需要输出接口文档&#xff0c;我们的接口文档&#xff0c;如果输出的有问题&#xff0c;首先给别人的感觉就是觉得你不专业&#xff0c;另外好的接口文档&#xff0c;给了他人以后&#xff0c;就完全可以按照你接口文档去做对接&#xff0c;…

【vue】项目开发常见问题目录

问题目录&#xff08;持续更新&#xff01;&#xff09; 0&#xff0c;页面初始化1&#xff0c; v-if 与 v-for 同时使用报错的问题2&#xff0c; 页面传参注意事项3&#xff0c; Vue路由this.$router.push转跳同一个页面不刷新4&#xff0c;NavigationDuplicated: Avoided red…

Linux之Centos7.6版本下载及安装Go语言环境配置,安装Go1.18版本教程笔记-2023版

文章目录 一、Linux下安装Go环境1.远程获取2.解压3. 添加环境变量5.Go环境配置图配置完成信息图 二、VsCode连接我们Go2.1安装对应的插件2.2进行连接3.相关配置4.成功连接 一、Linux下安装Go环境 推荐在linux下安装Go,因为windows配置的话有些运行不了&#xff0c;在我做Mit6.8…

【SpringCloud学习笔记】gateway网关

gateway网关 核心概念&#xff1a; 路由&#xff08;route&#xff09;&#xff1a;路由信息由 D、目标 RI、一组断言和一组过滤器组成。如果断言路由为真&#xff0c;则说明请求的 URI 和配配断言&#xff08;predicate&#xff09;&#xff1a; Java8 中的断言函数&#xf…

5种raid冗余磁盘阵列

1 RAID&#xff1f;作用&#xff1f; 1.1 RAID RAID就是冗余磁盘阵列&#xff0c;通常称作「磁盘阵列」的RAID (Redundant Array of Independent Disks)功能&#xff0c;多半是应用在NAS这类肩负资料储存的设备上&#xff0c;它能依据NAS里硬盘数量、容量的不同&#xff0c;提…

频段、信道、信道带宽、传输速率无线路由器2.4GHz和5GHz的区别?

无线通信是指电磁波经过空间传播传递信息的通讯方式&#xff0c;也被称为无线电通信。无论是采用何种的无线接入技术&#xff0c;都会涉及到4个重要的参数&#xff1a; 第一、频段 无线通信使用的是电磁波&#xff0c;既然是波&#xff0c;那就有频率&#xff0c;通过将电磁波…