# 现在我们用字典结合数组来实现一个简单的远程管理机
远程管理机的需求:现在需要在一个管理机上实现下列两点内容:
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