欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何在多臺服務器上運行相同命令

 更新時間:2023年06月28日 15:11:03   作者:cf313995  
這篇文章主要介紹了在多臺服務器上運行相同命令的相關知識,包括安裝及使用方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

PSSH

全稱是parallel-ssh,基于Python編寫的并發(fā)在多臺服務器上批量執(zhí)行命令的工具。包括pssh,pscp,prsync,pnuke和pslurp。該項目包括psshlib,可以在自定義應用程序中使用。它相當于ansible的簡化版,執(zhí)行起來速度比ansible快,支持文件并行復制,遠程命令執(zhí)行,殺掉遠程主機上的進程,殺手锏是文件并行復制。
    主要用法:
        pssh命令    在遠程主機上執(zhí)行本地命令或者腳本
        pscp命令    將本地文件拷貝至多個遠端主機
        pslurp命令  從多臺遠程機器拷貝文件到本地
        pnuke命令  在遠端主機殺進程
        prsync命令  使用rsync協(xié)議從本地計算機同步到遠程主機

安裝

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執(zhí)行命令

pssh -h pssh-hosts -l root -i "echo "Hello World""
# 因為已經(jīng)是互信環(huán)境,所以不需要輸入密碼

(3)、參數(shù)含義

-h -–hosts 主機文件列表,內(nèi)容格式[user@]host[:port]
-l -–user 登錄使用的用戶名
-p -–par 并發(fā)的線程數(shù)【可選】
-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從其它機器下載文件到本地

例如,先創(chuàng)建一個腳本,并將其傳入到每個機器上,獲取每個機器的hostname并寫入到一個文件,然后將每個機器上的該文件下載到本地。

準備:

在使用pssh執(zhí)行腳本后,將每個機器的hostname寫入到本地的某個文件了

最后使用pslurp將其拷貝到本地的某個目錄

pslurp -h pssh-hosts -L /a /tmp/1.txt 1.txt
# 將每個節(jié)點上的/tmp/1.txt下載到本地的a目錄里
# pslurp從遠程下載到遠程,所以先寫遠程的某個文件或目錄,再寫本地的目錄

(6)、pnuke 殺死遠程主機上的進程

例如殺死每個機器的nginx進程查看每個節(jié)點的nginx的狀態(tài)

執(zhí)行命令

查看效果

(7)、prsync跟rsync使用差不多,略過。

ansible

安裝

先搜索倉庫里的ansible源

然后安裝centos提供的ansible源

然后每個機器安裝ansible。(其實只需在管理主機上安裝,都安裝只是為了方便換其他機器后使用)

使用

(1)、安裝完后,在/etc/ansible/目錄下生成三個主要的文件或目錄

  • ansible.cfg: Ansible的配置文件
  • hosts:登記被管理的主機
  • roles:角色項目定義目錄,主要用于代碼復用

(2)、添加節(jié)點,在/etc/ansible/hosts文件中添加需要被管理的服務器節(jié)點

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"

這里將三個節(jié)點放入cluster組中,后面執(zhí)行命令時可指定針對某個組執(zhí)行。

(3)、建立互信環(huán)境

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

(4)、測試連通性

針對cluster組里的機器執(zhí)行ping命令

ansible cluster -m ping

若要針對所有組的機器執(zhí)行命令,則使用all即可。

ansible all -m ping

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

修改sshd_config

改sshd_config文件,取消注釋Subsystem

修改ansible配置文件,添加scp_if_ssh=True

在執(zhí)行時已經(jīng)沒有warning了

(6)、ansible命令構成

ansible的命令格式為, ansible 主機群組名 -m 命令模塊名 -a “批量執(zhí)行的操作”

常用模塊

  • ping模塊
  • command/shell模塊,兩者區(qū)別是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'
# 無需將腳本拷貝到其他節(jié)點

copy模塊,相當于scp

ansible all -m copy -a "src=/tmp/test.sh dest=/tmp/"
# 將本節(jié)點的該路徑的腳本拷貝到其他機器的tmp目錄下

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

其他模塊不再一一列舉,可通過ansible-doc 模塊名查看具體用法例如: ansible-doc yum

(7)、playbook

playbook即劇本,由一個或多個play組成,play的功能就是為歸為一組的主機編排要執(zhí)行的一系列task,其中每一個task就是調(diào)用Ansible的一個命令模塊。

playbook的核心元素包括:

  • hosts:執(zhí)行任務的主機,可以是主機組
  • tasks:要執(zhí)行的任務列表
  • variables:內(nèi)置變量或自定義的變量
  • templates:使用模板語法的文件,通常為配置文件
  • handlers:和notify結合使用,由特定條件觸發(fā),一般用于配置文件變更觸發(fā)服務重啟
  • tags:標簽,可在運行時通過標簽指定運行playbook中的部分任務
  • roles:定義可重用的任務和變量集合。

沒用過。

參考資料:https://www.cnblogs.com/spec-dog/p/12736447.html

自定義腳本

一個最簡單的腳本的方式

#!/bin/bash
# 要執(zhí)行的命令
COMMAND="ls -l"
# 集群中所有節(jié)點的 IP 地址
NODES=("192.168.1.101" "192.168.1.102" "192.168.1.103")
# 在所有節(jié)點上執(zhí)行命令
for NODE in "${NODES[@]}"
do
    echo "Executing command on node $NODE..."
    ssh $NODE $COMMAND
done

到此這篇關于如何在多臺服務器上運行相同命令的文章就介紹到這了,更多相關多臺服務器運行相同命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論