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 "33[1;32m↓↓↓↓↓↓↓↓↓↓ ${ECHO_MSG}↓↓↓↓↓↓↓↓↓↓ 33[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}的数字 " fi done } # 最后执行ssh_login函数来执行这个脚本 ssh_login
原文地址:https://www.cnblogs.com/llddhh/p/12656647.html