用dialog命令和脚本实现一个简单的跳板机

废话不多说,直接上代码和效果(企业环境已不使用脚本来做跳板机了);都已选择Jumpserver或堡垒机来提供审计功能和CMMS资产管理。

#!/bin/bash
#Author:     zhuyongci.com
#Version:              1.0

#ssh默认登陆用户
#需要实现免密
ssh_user="root"
ssh_port=22

#主机名必须与IP列表的索引对应
#下面3个数组存放主机信息
#定义主机列表,主要用于菜单展示
host_name=(
        "web01"
        "web02"
        "web03"
        "nfs"
        "rsync"
        "db" )

#定义主机IP列表
#如果要套用,请自行添加其它的IP和主机名定义
ip_list=(
        "172.16.1.200"
        "172.16.1.201"
        "172.16.1.202"
        "172.16.1.203"
        "172.16.1.204"
        "172.16.1.205" )

#根据前边的数组的总元素数量建立索引
#host_id=(0,1,2,3,4,5)

#menu菜单宽高定义
menu_height=40
menu_width=35
menu_list_width=30

#检测主机是否安装了dialog
dialog --help &> /dev/null
if [ $? -ne 0 ]; then
        yum install dialog -y
        if [ $? -ne 0 ]; then
                echo "安装dialog失败!"
                exit 1
        fi
fi

#返回数组的主机ID和主机名
get_host() {
        for i in `seq 0 $[${#host_name[*]}-1]`; do
                echo "$i ${host_name[${i}]}"
        done
}


#从$1获取主机ID信息并连接它
ssh_conn() {
        #连接之前,先清屏
        clear
        ssh $ssh_user@${ip_list[$1]}
}

#替换菜单项中的换行符为空格,否则无法作为dialog的参数
menu_list=`get_host | tr "\n" " "`

#菜单定义
tmp="dialog --no-cancel --ok-label "Connect" --menu "资产列表:" $menu_height $menu_width $menu_list_width $menu_list "
#屏蔽信号,使之不能被中断
#这特么就是以守护进程运行脚本
#还可以通过screen命令来实现
#有时候这几个信号偏偏想不起来😂
trap " " HUP INT TSTP
while true; do
        #提示信息
        dialog --title "Welcome to jumpserver" --msgbox "您可以上下移动光标或者键入数字选择要登陆的主机\n\nBy:     zhuyongci\nDate:  2019/08/06\nVer:          1.0" 10 30

        #生成菜单并保存选择的项目号
        $tmp 2> /tmp/$0.tmp

        #取主机索引ID
        num=$(grep "^[0-9]" /tmp/$0.tmp|cut -c1)

        #匹配菜单id
        case $num in
                0)
                        ssh_conn 0
                        ;;
                1)
                        ssh_conn 1
                        ;;
                2)
                        ssh_conn 2
                        ;;
                3)
                        ssh_conn 3 
                        ;;
                4)
                        ssh_conn 4
                        ;;
                5)
                        ssh_conn 5
                        ;;
        esac
done

附上几张效果图: dialog_jumpserver_msgbox dialog_jumpserver_menulist

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×