#!/bin/bash #Name: ks-cp.sh #Author: www.zhongjima.net #Datetime: 2017-05-08 #Usage: sudo bash ks-cp.sh [-d|-f|-h] #ln -s到/usr/local/bin目錄下面,chown +x 權限,就可以以Linux命令方式執(zhí)行 #定義顏色 RED='\033[31m' BLUE='\033[36m' GREEN='\033[32m' END='\033[0m' #文件復制 cp_file(){ name=$1 salt "${name}" cp.get_file salt://$PATH_NAME/$FILE ${ADDR}${FILE} >/dev/null 2>&1 [[ $? -eq 0 ]] && echo -e "主機:"$name" to "${ADDR}${FILE}" ${BLUE}[復制成功]${END}" || echo -e "主機:"$name" to "${ADDR}${FILE}" ${RED}[復制失敗]${END}" } #目錄復制 cp_dir(){ name=$1 salt "${name}" cp.get_dir salt://$PATH_NAME $ADDR >/dev/null 2>&1 [[ $? -eq 0 ]] && echo "主機:"$name" to "${ADDR}${PATH_NAME}" ${BLUE}[復制成功]${END}" || echo "主機:"$name" to "${ADDR}${PATH_NAME}" ${RED}[復制失敗]${END}" } #檢測狀態(tài),選擇復制 salt_test(){ name=$1 class=$2 salt "${name}" test.ping >/dev/null 2>&1 if [[ $? -eq 2 ]] ;then echo -e "${RED}主機名稱不正確or主機未安裝Salt-Minion:${END}"${BLUE}${name}${END} return 3 else salt "${name}" test.ping | grep "Minion did not return" >/dev/null 2>&1 if [[ $? -eq 1 ]];then [[ $class == "f" ]] && cp_file $name [[ $class == "d" ]] && cp_dir $name else echo -e "${RED}主機未開機or服務未啟動:${END}"${BLUE}${name}${END} return 4 fi fi } #拆分主機 ks_name(){ var=$1 var=${var//,/ } for names in $var;do salt_test $names $2 done } #用法 usege(){ echo -e "${GREEN}用法:`basename $0` [-d|-f|-h]${END}" echo -e "${GREEN} -d:復制目錄,salt倉庫目錄為根目錄(默認是/srv/salt/)${END}" echo -e "${GREEN} -f:復制文件,以salt倉庫目錄為根目錄${END}" echo -e "${GREEN} -h:獲取使用幫助${END}" echo -e "${GREEN} 例如:復制/srv/salt/chrome目錄下面的chrome57.deb到Minion,Minion2主機下面的/var/tmp/目錄${END}" echo -e "${GREEN} 填寫格式如下:\n 主機名:Minion,Minion2\n 文件路徑:chrome\n 文件名稱:chrome57.deb\n 目標存放目錄:/var/tmp/${END}" } #輸入條件 input(){ read -p "請輸入主機名稱(多個主機,隔開):" NAME read -p "請輸入文件路徑(salt倉庫目錄為根目錄,/srv/salt/chrome,填寫chrome即可):" PATH_NAME [[ $1 == "f" ]] && read -p "請輸入文件名稱:" FILE read -p "請輸入目標存放目錄(如:/var/tmp/):" ADDR ks_name $NAME $option } #判斷參數(shù)是否正確 if [ $1 ];then while getopts ":fdh" option;do case $option in f) input $option;; d) input $option;; h) usege exit 0;; *) usege exit 3;; esac done else usege exit 3 fi
贊
0
賞