• 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
  • 相关阅读:
    社群电商
    文字超出部分省略号显示······
    jq监听页面的滚动事件,
    input 更改 pleaseholder 的字体样式
    20161213 scrapy安装
    map按照value排序的方法
    Qt跨线程信号和槽的连接
    C++ map指针的使用
    Python 高级进阶
    [转]解读C指针(5)——笔试题解析
  • 原文地址:https://www.cnblogs.com/llddhh/p/12656647.html
Copyright © 2020-2023  润新知