Linux下批量操作伺服器方法

2021-08-13 00:57:03 字數 1663 閱讀 7727

引言

如果需要在大量的伺服器執行相同的操作,或者是部署分布式應用(elk, k8s, geth等)時,一般的做法是寫乙個批量操作的本地指令碼,依次scp到每一台伺服器上,然後ssh到每一台伺服器上執行指令碼。但如果有上幾十台甚至上百臺機器呢,或是剛寫完乙個指令碼發下有缺陷,又需要重複的做scp、ssh的工作,在此來說一下我自己批量操作伺服器時使用的方法,如果有更好的方法,歡迎指導交流。

一、建立ssh信任關係

由於需要執行ssh和scp命令,必然要涉及到輸入伺服器密碼的操作,或者有的伺服器設定中禁用了輸入密碼的方式登入。雖然可以使用expect指令碼來輸入密碼,但是由於他的實現原理,用一下就知道有多麼的操蛋。此時,建立信任關係成了最方便的方法。之前建立好信任關係的可以跳過此章。

ssh-keygen -t rsa
然後檢視已經生成的公鑰

vim ~/.ssh/id_rsa.pub
把該檔案的內容追加到伺服器的信任列表中,如果沒有這個檔案就自行建立

vim /root/.ssh/authorized_keys
好了,接下來我們就可以自由的scp和ssh了。

二、編寫伺服器需要執行的指令碼

假設我們想檢視每一台伺服器的磁碟使用情況

cd /tmp

echo df > df.sh

三、編寫批量操作指令碼

cat > /tmp/sshall.sh << eof

#!/bin/bash

#server list

iplist=(

103.235.247.111

101.207.224.222

107.155.29.111

107.155.2.222

)function fun

for ip in $

do fun $ip

echo _____

done

eofchmod 777 sshall.sh

四、執行

./sshall.sh

結果:

tmpfs             6540056        0    6540056   0% /run/user/1001

_____

tmpfs 6540872 0 6540872 0% /run/user/1000

_____

tmpfs 6587832 0 6587832 0% /run/user/0

_____

tmpfs 388176   0 388176  0% /run/user/0

_____

五、總結

本文沒有什麼技術含量,只在分享一種方法,原理就是建立信任關係後利用scp遠端拷貝檔案和ssh遠端執行命令。在實際操作中會用更靈活的應用方式。

當然,如果伺服器數量不多,也可以使用terminator終端的分屏功能來實現操作,效果如下

dsh批量管理linux伺服器

一,安裝dsh wget tar zxvf libdshconfig 0.20.9.tar.gz cd libdshconfig 0.20.9 configure make make install wget tar zxvf dsh 0.25.9.tar.gz cd dsh 0.25.9 conf...

ubuntu下apache伺服器操作方法小結

linux系統為ubuntu 一 sta程式設計客棧rt apache 2 server 啟動apache服務 etc init.d apache2 start or sudo etc init.d apache2 start 二 restart apache 2 server 重啟apache服務...

Linux下CVS伺服器

2.在 etc xinetd.d下面建立乙個檔案cvspserver,其內容如下 service cvspserver 其中cvs命令在 usr bin目錄下,而設定cvs工作根目錄是 cvs。3.重新啟動xinetd超級伺服器,使用下面命令 etc init.d xinetd restart 4....