1. <var id="fe6gj"></var>

    <rp id="fe6gj"><nav id="fe6gj"></nav></rp>

    <noframes id="fe6gj"><cite id="fe6gj"></cite>

    <ins id="fe6gj"><button id="fe6gj"><p id="fe6gj"></p></button></ins>
    1. <tt id="fe6gj"><i id="fe6gj"><sub id="fe6gj"></sub></i></tt>
        始創于2000年 股票代碼:831685
        咨詢熱線:0371-60135900 注冊有禮 登錄
        • 掛牌上市企業
        • 60秒人工響應
        • 99.99%連通率
        • 7*24h人工
        • 故障100倍補償
        您的位置: 網站首頁 > 幫助中心>文章內容

        批量在遠程執行命令 (1)

        發布時間:  2012/7/23 19:15:07

        對于運維來說,同時管理多臺機器是很辛苦的事情,特別是CDN運維需要同時重新啟動1000臺機器的apache的話或者獲取所有機器的狀態,靠人工一個個上遠程機器上去執行非常費勁,為此我寫了一個在一臺機器上批量在多臺機器上執行shell命令的小程序。

        這個程序是順序在各個遠程機器上執行命令,并且把遠程執行的輸出打印出來。

        雖然scp命令也可以執行遠程命令,但是這個程序還有一個好處就是有超時時間(30秒),當某條命令執行超過30秒后,這個程序會繼續執行下一臺機器,而遠程的機器上的命令還會繼續執行完畢。直接使用scp執行遠程命令的話必須等命令執行完畢才能退出。

        其中用到了expect:
          Expect在這個程序里就是用來幫助自動輸入scp的密碼,Expect主要用于把需要人工交互的程序變為程序自動化完成,這個對于運維批量部署系統,批量無人值守安裝,批量執行命令,批量上傳下載
         現代的Shell對程序提供了最小限度的控制(開始,停止,等等),而把交互的特性留給了用戶。 這意味著有些程序,你不能非交互的運行,比如說passwd。 有一些程序可以非交互的運行,但在很大程度上喪失了靈活性,比如說fsck。這表明Unix的工具構造邏輯開始出現問題。Expect恰恰填補了其中的一些裂痕,解決了在Unix環境中長期存在著的一些問題。

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

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

        1.multi_scp_shell.sh

         

        #!/bin/bash  #author: yifangyou  #create time:2011-05-17  #用來通過scp在目標機器批量執行命令  #配置文件格式:  #ssh_hosts=("1.1.1.1" "2.2.2.2")  #ssh_ports=("22" "22") 這個可以缺省,缺省值為22,或者個數比ssh_hosts少時,使用缺省值  #ssh_users=("root" "root") 這個可以缺省,缺省值為root,,或者個數比ssh_hosts少時,使用缺省值  #ssh_passwords=("323" "222") 這個可以缺省,缺省的話需要從命令行輸入,或者個數比ssh_hosts少時,使用命令行輸入  #執行: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  #若是沒有在配置文件里提供密碼,則在命令行輸入  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號天一大廈608室 郵編(ZIP):450008 傳真(FAX):0371-60123888
           聯系:億恩小凡
           QQ:89317007
           電話:0371-63322206


        本文出自:億恩科技【www.endtimedelusion.com】

        服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

      1. 您可能在找
      2. 億恩北京公司:
      3. 經營性ICP/ISP證:京B2-20150015
      4. 億恩鄭州公司:
      5. 經營性ICP/ISP/IDC證:豫B1.B2-20060070
      6. 億恩南昌公司:
      7. 經營性ICP/ISP證:贛B2-20080012
      8. 服務器/云主機 24小時售后服務電話:0371-60135900
      9. 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
      10. 專注服務器托管17年
        掃掃關注-微信公眾號
        0371-60135900
        Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
          1
         
         
         
         

        0371-60135900
        7*24小時客服服務熱線

         
         
        av不卡不卡在线观看_最近2018年中文字幕_亚洲欧美一区二区三区_一级A爱做片免费观看国产_日韩在线中文天天更新_伊人中文无码在线