shell進階篇之字典和數組結合應用案例


# 現在我們用字典結合數組來實現一個簡單的遠程管理機

遠程管理機的需求:現在需要在一個管理機上實現下列兩點內容:

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


免責聲明!

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



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