功能說明:批量在多台服務器上執行命令
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
