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

如何在多臺(tái)服務(wù)器上運(yùn)行相同命令

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

PSSH

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

安裝

yum install epel-release
yum install pssh

使用

(1)、定義一個(gè)文件,寫(xiě)入需要操作的機(jī)器,如pssh-hosts

vim pass-hosts

然后寫(xiě)入需要控制的機(jī)器

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""
# 因?yàn)橐呀?jīng)是互信環(huán)境,所以不需要輸入密碼

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

-h -–hosts 主機(jī)文件列表,內(nèi)容格式[user@]host[:port]
-l -–user 登錄使用的用戶名
-p -–par 并發(fā)的線程數(shù)【可選】
-t --timeout 超時(shí)時(shí)間【可選】
-v --verbose 輸出詳細(xì)信息【可選】

僅包含在pslurp里的

-L --localdir 下載文件的保存目錄

(4)、pscp從96.54拷貝文件到其他機(jī)器

pscp.pssh -h pssh-hosts -l root pssh-hosts /tmp
# 拷貝pssh-hosts文件到其他機(jī)器的/tmp目錄
# pscp從本地拷貝到遠(yuǎn)程,所以先寫(xiě)本地的某個(gè)文件或目錄,再寫(xiě)遠(yuǎn)程的目錄

(5)、pslurp從其它機(jī)器下載文件到本地

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

準(zhǔn)備:

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

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

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

(6)、pnuke 殺死遠(yuǎn)程主機(jī)上的進(jìn)程

例如殺死每個(gè)機(jī)器的nginx進(jìn)程查看每個(gè)節(jié)點(diǎn)的nginx的狀態(tài)

執(zhí)行命令

查看效果

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

ansible

安裝

先搜索倉(cāng)庫(kù)里的ansible源

然后安裝centos提供的ansible源

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

使用

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

  • ansible.cfg: Ansible的配置文件
  • hosts:登記被管理的主機(jī)
  • roles:角色項(xiàng)目定義目錄,主要用于代碼復(fù)用

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

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"

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

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

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

(4)、測(cè)試連通性

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

ansible cluster -m ping

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

ansible all -m ping

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

修改sshd_config

改sshd_config文件,取消注釋Subsystem

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

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

(6)、ansible命令構(gòu)成

ansible的命令格式為, ansible 主機(jī)群組名 -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'
# 無(wú)需將腳本拷貝到其他節(jié)點(diǎn)

copy模塊,相當(dāng)于scp

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

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

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

(7)、playbook

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

playbook的核心元素包括:

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

沒(méi)用過(guò)。

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

自定義腳本

一個(gè)最簡(jiǎn)單的腳本的方式

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

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

相關(guān)文章

最新評(píng)論