zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    SEO常用外链资源站整理分享
    不同的LINUX系统,跨服务器快速拷贝文件
    WPS表格、Excel常用技巧大全,99%人都不知道,但非常实用!
    php 5.4中php-fpm 的重启、终止操作命令
    帝国CMS伪静态
    Centos7访问Win7/Win10系统中的共享文件
    H3C S5500三层交换机划分Vlan与H3C路由组网
    H3C S5500V2交换机误格式化恢复
    linux_centos7_时间更新
    Centos7安装mysql数据库
  • 原文地址:https://www.cnblogs.com/llddhh/p/12656647.html
Copyright © 2011-2022 走看看