這篇文章給大家分享的是有關(guān)如何實(shí)現(xiàn)可在任意服務(wù)器上執(zhí)行命令的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
我們提供的服務(wù)有:做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、和平ssl等。為數(shù)千家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢(xún)和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的和平網(wǎng)站制作公司
之前維護(hù)著上千臺(tái)服務(wù)器組成的服務(wù)器集群,如果每次需要在服務(wù)器上執(zhí)行命令的時(shí)候,都要手動(dòng)登錄每臺(tái)服務(wù)器進(jìn)行操作的話(huà),那也太麻煩了。你想想,如果在上千臺(tái)服務(wù)器的集群中,每臺(tái)服務(wù)器中只需要簡(jiǎn)單的執(zhí)行一個(gè)相同的命令,那別說(shuō)執(zhí)行命令了,就是讓你依次手動(dòng)登錄上千臺(tái)服務(wù)器,那也夠你受的了。估計(jì)依次登錄上千臺(tái)服務(wù)器,給你三天時(shí)間你可能都登不完,那怎么辦呢?有沒(méi)有什么好的方法來(lái)解決這個(gè)問(wèn)題呢?
別急,我們今天就是來(lái)解決這個(gè)問(wèn)題的。
說(shuō)實(shí)話(huà),我在維護(hù)上千臺(tái)服務(wù)器集群的時(shí)候,并沒(méi)有去依次手動(dòng)登錄每臺(tái)服務(wù)器,為啥?沒(méi)錯(cuò),就是因?yàn)槲覒邪。∥覒械娜サ卿?,并且依次登錄那么多臺(tái)服務(wù)器,整個(gè)人都會(huì)崩潰的。
于是,我就想辦法能不能寫(xiě)個(gè)腳本,讓這個(gè)腳本接收我要執(zhí)行的命令,然后將命令依次分發(fā)到集群上所有的服務(wù)器中執(zhí)行,這不就解決問(wèn)題了嗎?說(shuō)干就干。
不過(guò),這里,有個(gè)需要注意的地方:那就是:需要提前配置好集群中每臺(tái)服務(wù)器的主機(jī)名和IP地址的對(duì)應(yīng)關(guān)系,能夠互相使用主機(jī)名進(jìn)行通信,并配置了SSH免密碼登錄。這一點(diǎn)不行擔(dān)心,只要讓運(yùn)維在規(guī)劃和分配服務(wù)器的時(shí)候,規(guī)劃好就行了,無(wú)需后面再依次登錄服務(wù)器處理。
為了方便小伙伴們理解,這里我們就假設(shè)集群中存在1024臺(tái)服務(wù)器,每臺(tái)服務(wù)器的主機(jī)名為binghe1~binghe1024。每臺(tái)服務(wù)器可以通過(guò)主機(jī)名進(jìn)行通信,接下來(lái),我寫(xiě)了一個(gè)名稱(chēng)為distribute_command.sh的腳本,內(nèi)容如下所示。
#!/bin/bash
pcount=$#
if (( pcount<1 )) ; then
echo no args;
exit;
fi
#先在本機(jī)上執(zhí)行命令
echo ------------binghe$host-----------------
$@
#循環(huán)在集群中的遠(yuǎn)程節(jié)點(diǎn)上執(zhí)行命令
for (( host=1 ; host<=1024; host=host+1)) ; do
echo ------------binghe$host-----------------
ssh binghe$host $@
done;
這個(gè)腳本的含義為:接收傳遞進(jìn)來(lái)的命令,將命令分發(fā)到主機(jī)名為binghe1~binghe1024的服務(wù)器上執(zhí)行,也就是說(shuō),使用這個(gè)腳本我們能夠做到:同時(shí)在集群的服務(wù)器上執(zhí)行相同的命令。
接下來(lái),為distribute_command.sh腳本賦予可執(zhí)行權(quán)限,如下所示。
chmod a+x ./distribute_command.sh
使用格式如下:
./distribute_command.sh 在服務(wù)器上執(zhí)行的完整命令
使用示例
./distribute_command.sh echo "hello world" >> /home/hello.txt
./distribute_command.sh cat /home/hello.txt
./distribute_command.sh rm -rf /home/hello.txt
感謝各位的閱讀!關(guān)于“如何實(shí)現(xiàn)可在任意服務(wù)器上執(zhí)行命令”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!