【Shell實戰】批量在多台服務器上執行命令


功能說明:批量在多台服務器上執行命令

 1 #!/bin/bash
 2 
 3 # ==========================================
 4 # 功能:批量在多台服務器上執行命令
 5 # 方法:./batch_cmd_manager.sh <cmd_to_exec>
 6 # 返回:各服務器執行命令返回的結果列表
 7 # 前提:在待執行命令的各個服務器上設置了免密登錄
 8 # 警告:禁止執行刪除、格式化等這樣的可能造成嚴重后果的命令
 9 # 日期:2018-04-23
10 #   By:HackHan
11 # 其他:設置免密登錄參考:https://blog.csdn.net/zoombinde/article/details/51902208
12 # 文件:batch_cmd_manager.sh
13 # ==========================================
14 
15 
16 do_command()
17 {
18         hosts=`sed -n '/^[^#]/p' hostlist.txt`
19         for host in $hosts
20                 do
21                         echo ""
22                         echo HOST $host
23                         ssh $host "$@"
24                 done
25         return 0
26 }
27 
28 
29 if [ $# != 1 ]
30 then
31         echo "=========================================="
32         echo "功能:批量在多台服務器上執行命令"
33         echo "方法:$0 \"<cmd_to_exec>\""
34         echo "返回:各服務器執行命令返回的結果列表"
35         echo "前提:在待執行命令的各個服務器上設置了免密登錄"
36         echo "警告:禁止執行刪除、格式化等這樣的可能造成嚴重后果的命令"
37         echo "=========================================="
38         exit 1
39 fi
40 
41 
42 echo "確定要執行命令?[yes/no]:$@ "
43 read to_run
44 
45 local_ip=10.143.2.4
46 
47 if [ $to_run = "yes" -o $to_run = "YES" -o $to_run = "y" -o $to_run = "Y" ]
48 then
49         echo ""
50         echo -e "\033[31m執行命令 : $@ \033[0m"
51         do_command "$@"
52         echo ""
53         echo HOST $local_ip
54         $@
55 else
56         echo "取消執行命令!"
57 fi
58 
59 echo ""
60 echo "=========================================="

保存IP地址列表的文件hostlist.txt:

# IP地址列表,每行一個
xx.xx.xx.xx
xx.xx.xx.xxx
xxx.xxx.xx.xx

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM