主頁 > 知識庫 > shell腳本實現(xiàn)同時多臺遠(yuǎn)程主機(jī)執(zhí)行命令的代碼分享

shell腳本實現(xiàn)同時多臺遠(yuǎn)程主機(jī)執(zhí)行命令的代碼分享

熱門標(biāo)簽:益陽400電話申請辦理流程 江西全自動外呼系統(tǒng)報價 地圖標(biāo)注人員分布 昆明電銷機(jī)器人價格 上海機(jī)器人外呼系統(tǒng)哪家好 梧州防封電銷卡 怎么用百度地圖標(biāo)注坐標(biāo) 春運地圖標(biāo)注app 400的電話一般從哪里辦理

實現(xiàn)需求

在對單臺機(jī)器做操作時我們會用“ssh ip”的方式登錄到機(jī)器上,可以寫這樣一個工具vssh ip1,ip2,…ipn 來模擬登錄到n 臺服務(wù)器,登錄后所有操作相當(dāng)于同時對n 臺服務(wù)器生效。

實現(xiàn)方法

首頁要確保可以通過本地公鑰無密碼登錄遠(yuǎn)程主機(jī):

ssh-copy-id [-i [identity_file]] [user@]machine

shell腳本

#!/bin/bash
# -------------------------------------------------------------------------------
# Author:   Loya.Chen
# Description: Execute commands on multiple remote hosts at the same time.
# -------------------------------------------------------------------------------
set -e
Usage() {
  echo "Usage: $0 host1 host2 ... 'command'"
}
if [ $# -lt 2 ] ;then
  Usage
  exit 0
else
  cmd=${!#}
fi
logfile=$(mktemp)
i=1
success=0
failed=0
for ip in $@;do 
  if [ $i -eq $# ];then
    break
  fi
  ssh $ip $cmd > $logfile
  if [ $? -eq 0 ];then
    #((success++))
    success=$(($success+1))
    echo -e "\n\033[32m$ip | success \033[0m \n"
    cat $logfile
  else
    ((failed++))
    echo -e "\n\033[31m$ip | failed \033[0m\n "
    cat $logfile
  fi
  ((i++))
done
echo -e '\n-------------------------'
echo -e "\033[32msuccess: $success | failed: $failed \033[0m"
echo '-------------------------'

示例

$ bash vssh 10.0.0.11 10.0.0.12 'free -m'
10.0.0.11 | success 
       total    used    free   shared  buffers   cached
Mem:     2871    156    2715     0     8     36
-/+ buffers/cache:    111    2760
Swap:     2047     0    2047
10.0.0.12 | success 
       total    used    free   shared  buffers   cached
Mem:      980    615    365     0     12     69
-/+ buffers/cache:    533    447
Swap:     2047     0    2047
-------------------------
success: 2 | failed: 0 
-------------------------

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • Shell命令行中特殊字符與其轉(zhuǎn)義詳解(去除特殊含義)
  • linux shell發(fā)送Email郵件的方法詳解
  • 詳解shell 遍歷文件夾內(nèi)所有文件并打印絕對路徑
  • Linux shell 之 提取文件名和目錄名的一些方法總結(jié)
  • Linux shell常用的73條命令總結(jié)
  • shell腳本報錯:"[: =: unary operator expected"解決辦法

標(biāo)簽:惠州 北京 河南 懷化 九江 贛州 新疆 亳州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《shell腳本實現(xiàn)同時多臺遠(yuǎn)程主機(jī)執(zhí)行命令的代碼分享》,本文關(guān)鍵詞  shell,腳本,實現(xiàn),同時,多臺,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《shell腳本實現(xiàn)同時多臺遠(yuǎn)程主機(jī)執(zhí)行命令的代碼分享》相關(guān)的同類信息!
  • 本頁收集關(guān)于shell腳本實現(xiàn)同時多臺遠(yuǎn)程主機(jī)執(zhí)行命令的代碼分享的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章