亚洲综合社区欧美综合色-欧美逼逼一区二区三区-国产老熟女高潮精品网站-国产日韩最新视频在线看

始創(chuàng)于2000年 股票代碼:831685
咨詢(xún)熱線:0371-60135900 注冊(cè)有禮 登錄
  • 掛牌上市企業(yè)
  • 60秒人工響應(yīng)
  • 99.99%連通率
  • 7*24h人工
  • 故障100倍補(bǔ)償
全部產(chǎn)品
您的位置: 網(wǎng)站首頁(yè) > 幫助中心>文章內(nèi)容

批量在遠(yuǎn)程執(zhí)行命令 (1)

發(fā)布時(shí)間:  2012/7/23 19:15:07

對(duì)于運(yùn)維來(lái)說(shuō),同時(shí)管理多臺(tái)機(jī)器是很辛苦的事情,特別是CDN運(yùn)維需要同時(shí)重新啟動(dòng)1000臺(tái)機(jī)器的apache的話(huà)或者獲取所有機(jī)器的狀態(tài),靠人工一個(gè)個(gè)上遠(yuǎn)程機(jī)器上去執(zhí)行非常費(fèi)勁,為此我寫(xiě)了一個(gè)在一臺(tái)機(jī)器上批量在多臺(tái)機(jī)器上執(zhí)行shell命令的小程序。

這個(gè)程序是順序在各個(gè)遠(yuǎn)程機(jī)器上執(zhí)行命令,并且把遠(yuǎn)程執(zhí)行的輸出打印出來(lái)。

雖然scp命令也可以執(zhí)行遠(yuǎn)程命令,但是這個(gè)程序還有一個(gè)好處就是有超時(shí)時(shí)間(30秒),當(dāng)某條命令執(zhí)行超過(guò)30秒后,這個(gè)程序會(huì)繼續(xù)執(zhí)行下一臺(tái)機(jī)器,而遠(yuǎn)程的機(jī)器上的命令還會(huì)繼續(xù)執(zhí)行完畢。直接使用scp執(zhí)行遠(yuǎn)程命令的話(huà)必須等命令執(zhí)行完畢才能退出。

其中用到了expect:
  Expect在這個(gè)程序里就是用來(lái)幫助自動(dòng)輸入scp的密碼,Expect主要用于把需要人工交互的程序變?yōu)槌绦蜃詣?dòng)化完成,這個(gè)對(duì)于運(yùn)維批量部署系統(tǒng),批量無(wú)人值守安裝,批量執(zhí)行命令,批量上傳下載
 現(xiàn)代的Shell對(duì)程序提供了最小限度的控制(開(kāi)始,停止,等等),而把交互的特性留給了用戶(hù)。 這意味著有些程序,你不能非交互的運(yùn)行,比如說(shuō)passwd。 有一些程序可以非交互的運(yùn)行,但在很大程度上喪失了靈活性,比如說(shuō)fsck。這表明Unix的工具構(gòu)造邏輯開(kāi)始出現(xiàn)問(wèn)題。Expect恰恰填補(bǔ)了其中的一些裂痕,解決了在Unix環(huán)境中長(zhǎng)期存在著的一些問(wèn)題。

 
  Expect使用Tcl作為語(yǔ)言核心。不僅如此,不管程序是交互和還是非交互的,Expect都能運(yùn)用。

 
注意:這個(gè)小工具一次只能執(zhí)行一行shell語(yǔ)句,若是要執(zhí)行多行語(yǔ)句的話(huà),先把這些語(yǔ)句寫(xiě)到一個(gè)文件里(例如exe.sh),用我之前寫(xiě)的批量上傳工具把exe.sh上傳到指定目錄(例如/tmp),然后再用這個(gè)工具執(zhí)行"sh /tmp/exe.sh",即可

1.multi_scp_shell.sh

 

#!/bin/bash  #author: yifangyou  #create time:2011-05-17  #用來(lái)通過(guò)scp在目標(biāo)機(jī)器批量執(zhí)行命令  #配置文件格式:  #ssh_hosts=("1.1.1.1" "2.2.2.2")  #ssh_ports=("22" "22") 這個(gè)可以缺省,缺省值為22,或者個(gè)數(shù)比ssh_hosts少時(shí),使用缺省值  #ssh_users=("root" "root") 這個(gè)可以缺省,缺省值為root,,或者個(gè)數(shù)比ssh_hosts少時(shí),使用缺省值  #ssh_passwords=("323" "222") 這個(gè)可以缺省,缺省的話(huà)需要從命令行輸入,或者個(gè)數(shù)比ssh_hosts少時(shí),使用命令行輸入  #執(zhí)行:sh multi_scp_shell.sh conf_file_path 'cmd' if [ -z "$2" ]  then echo "sh multi_scp_shell.sh conf_file_path 'cmd'";  exit;  fi  default_ssh_user="root" default_ssh_port="22";  #upload shell script file path  scp_upload=scp_upload.sh  #configure file path  conf_file=$1  #shell command  scp_cmd=$2  #判斷conf_file配置文件是存在  if [ ! -e "$conf_file" ]  then echo "$conf_file is not exists";  exit;  fi  #read configure file  source $conf_file  #若是沒(méi)有在配置文件里提供密碼,則在命令行輸入  if [ "${#ssh_passwords[@]}" = "0" ] || [ "${#ssh_passwords[@]}" -lt "${#ssh_hosts[@]}" ]  then read -p "please input password:" -s default_ssh_password  fi  success_hosts="";  fail_hosts="";  for((i=0;i<${#ssh_hosts[@]};i++))  do  #remote ssh host  ssh_host=${ssh_hosts[$i]};  if [ "$ssh_host" != "" ]  then #remote ssh port  ssh_port=${ssh_ports[$i]};  if [ "$ssh_port" = "" ]  then ssh_port=$default_ssh_port; #use default value  fi  #remote ssh user ssh_user=${ssh_users[$i]};  if [ "$ssh_user" = "" ]  then ssh_user=$default_ssh_user; #use default value  fi  #remote ssh password ssh_password=${ssh_passwords[$i]};  if [

億恩科技地址(ADD):鄭州市黃河路129號(hào)天一大廈608室 郵編(ZIP):450008 傳真(FAX):0371-60123888
   聯(lián)系:億恩小凡
   QQ:89317007
   電話(huà):0371-63322206


本文出自:億恩科技【1tcdy.com】

服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經(jīng)營(yíng)性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經(jīng)營(yíng)性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經(jīng)營(yíng)性ICP/ISP證:贛B2-20080012
  • 服務(wù)器/云主機(jī) 24小時(shí)售后服務(wù)電話(huà):0371-60135900
  • 虛擬主機(jī)/智能建站 24小時(shí)售后服務(wù)電話(huà):0371-60135900
  • 專(zhuān)注服務(wù)器托管17年
    掃掃關(guān)注-微信公眾號(hào)
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權(quán)所有  地址:鄭州市高新區(qū)翠竹街1號(hào)總部企業(yè)基地億恩大廈  法律顧問(wèn):河南亞太人律師事務(wù)所郝建鋒、杜慧月律師   京公網(wǎng)安備41019702002023號(hào)
      1
     
     
     
     

    0371-60135900
    7*24小時(shí)客服服務(wù)熱線