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

 更新时间:2023年06月28日 15:11:03   作者:cf313995  
这篇文章主要介绍了在多台服务器上运行相同命令的相关知识,包括安装及使用方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

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的状态

执行命令

查看效果

(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

到此这篇关于如何在多台服务器上运行相同命令的文章就介绍到这了,更多相关多台服务器运行相同命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在Windows上搭建自己的Git服务器的图文教程

    在Windows上搭建自己的Git服务器的图文教程

    这篇文章主要为大家详细介绍了如何在 Windows10 Professional 服务器上搭建自己的 Git 服务器,文中通过图文详细的介绍了搭建步骤,需要的可以参考下
    2023-08-08
  • WampServer下如何配置多域名

    WampServer下如何配置多域名

    这篇文章主要介绍了WampServer下如何配置多域名的相关资料,需要的朋友可以参考下
    2015-10-10
  • URL Rewrite Module 2.1 URL重写模块规则写法

    URL Rewrite Module 2.1 URL重写模块规则写法

    URL重写模块是IIS的扩展,可作为独立IIS Server的下载下载,并且还预先安装在Windows Azure网站(WAWS)上的任何网站上,供您使用,本教程将指导您完成如何为URL重写模块创建和测试一组重写规则
    2020-12-12
  • RHEL网络服务器详解

    RHEL网络服务器详解

    这篇文章主要介绍了RHEL网络服务器的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-12-12
  • 解密Console LDAP配置

    解密Console LDAP配置

    这篇文章主要为大家介绍了解密Console LDAP配置,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • Flink实践Savepoint使用示例详解

    Flink实践Savepoint使用示例详解

    这篇文章主要为大家介绍了Flink实践Savepoint使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • 手机怎么访问电脑服务器上的网页

    手机怎么访问电脑服务器上的网页

    这篇文章主要介绍了手机怎么访问电脑服务器上的网页的相关资料,需要的朋友可以参考下
    2016-02-02
  • 虚拟主机应该如何解决电信网通间互联互通

    虚拟主机应该如何解决电信网通间互联互通

    电信和网通两大基础网络,人为地割裂了整个中国的网络。无论是选择把网站托管在电信、还是网通,都等于是在拒绝处于另外一个网络中的客户,因为实在太慢了
    2011-10-10
  • Memcache缓存系统知识点梳理

    Memcache缓存系统知识点梳理

    Memcached是一个免费开源的,高性能的,具有分布式对象的缓存系统,它可以用来保存一些经常存取的对象或数据,保存的数据像一张巨大的HASH表,该表以Key-value对的方式存在内存中
    2012-09-09
  • 服务器的MSDTC不可用解决办法

    服务器的MSDTC不可用解决办法

    MSDTC(分布式交易协调器),协调跨多个数据库、消息队列、文件系统等资源管理器的事务。该服务的进程名为Msdtc.exe,该进程调用系统Microsoft Personal Web Server和Microsoft SQL Server。该服务用于管理多个服务器
    2015-07-07

最新评论