# 現在我們用字典結合數組來實現一個簡單的遠程管理機
遠程管理機的需求:現在需要在一個管理機上實現下列兩點內容:
1.需要可以實時查看現有項目運行狀態
2.遠程登陸任意一台機器
備注:現有的機器如下
# 備注:通過 shell的字典和數組,寫一個shell腳本來實現一個遠程管理機器
#!/bin/bash #必須先聲明 declare -A dic dic=( [10.3.1.1]="10.3.1.1,22,deploy1_dir,deploy1_name" [10.3.1.2]="10.3.1.2,26,deploy2_dir,deploy2_name" ) # 獲取字典所有的key DIC_KEY=$(echo ${!dic[@]}) # 將字典的key轉換為數組 DIC_ARRAY=( $DIC_KEY ) # 獲取數組的總個數 ARRAY_NUM=${#DIC_ARRAY[*]}
# UPDATE_PROJECT函數用來打印所有可登錄機器 UPDATE_PROJECT(){ UPDATE_PROJECT_ARRAY_NUM=`expr ${#DIC_ARRAY[@]} - 1` echo "項目IP 序列號 項目" for i in `seq 0 ${UPDATE_PROJECT_ARRAY_NUM}` do DIC_KEY=`echo ${DIC_ARRAY[${i}]}` IP=` echo ${dic["$DIC_KEY"]}|awk -F[,] '{print $1}'` PORT=` echo ${dic["$DIC_KEY"]}|awk -F[,] '{print $2}'` DIR=` echo ${dic["$DIC_KEY"]}|awk -F[,] '{print $3}'` NAME=` echo ${dic["$DIC_KEY"]}|awk -F[,] '{print $4}'` echo "$IP $i $DIR" done }
# ssh_login函數用來控制ssh遠程登陸 ssh_login(){ ECHO_MSG='可以ssh遠程登陸的項目' READ_MSG='輸入要ssh遠程登陸的序列號' while true do clear echo -e "\033[1;32m↓↓↓↓↓↓↓↓↓↓ ${ECHO_MSG}↓↓↓↓↓↓↓↓↓↓ \033[0m" UPDATE_PROJECT read -p "$READ_MSG: " NUM if [ "$NUM" = 0 ];then echo -e "" MENU elif [[ "$NUM" =~ ^[0-9]+$ ]] && [ "$NUM" -le ${ARRAY_NUM} ];then ssh -p $PORT root@${DIC_ARRAY[${NUM}]} else echo -e "輸入0-${ARRAY_NUM}的數字\n" fi done } # 最后執行ssh_login函數來執行這個腳本 ssh_login