ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

图形化跳板机模块

2022-07-27 18:03:47  阅读:169  来源: 互联网

标签:10 跳板 title -- 60 whiptail 模块 ## 图形化


shell 图形化跳板机

whiptail

在CentOS6系统中,我们可以使用setup指令来修改网卡的IP等信息,交互起来十分方便
在CentOS7系统中,setup命令已经没有了,但是还有nmtui命令,可以让我们修改IP和主机名。

那么whiptail命令的作用,就是出现一个可以交互的图形化界面,并且样式有很多。

在之前的课程中,我们已经使用流程控制语句,满足了一个跳板机的需求,但是我们还想是想更多的功能,当然脚本也都能实现,但是我们想要更炫酷的,脱离死气沉沉的命令行。

那么我们就一起来看一下,whiptail可以实现哪些需求吧...

消息框

#!/bin/bash

## 消息框
whiptail --title "$HOSTNAME Disk Info" --msgbox "`df -h`" 30 60

--title:       #指定标题内容:$HOSTNAME Disk Info
--msgbox:      #指定信息内容:`df -h`
30:            #展示信息框的高度为:30
60:            #展示信息框的宽度为:60

返回值

$?   0

布尔值选择框

## 布尔值选择框
whiptail --title "你确定要这么做吗?" --yesno "请做出你的选择YES or NO !" 10 60
echo $?

返回值

yes:0
no:1


## 布尔值选择框案例一:
whiptail --title "你确定要这么做吗?" --yesno "请做出你的选择YES or NO !" 10 60
if [ $? -eq 0 ];then
        echo '选择的yes'
else
        echo '选择的是no'
fi

## 布尔值选择框案例二:
whiptail --title "你确定要这么做吗?" --yes-button "运维" --no-button "开发" --yesno "请选择你在公司的岗位" 10 60
if [ $? -eq 0 ];then
       echo '你的岗位是运维'
else
       echo '你的岗位是开发'
fi


--titlle:标题
--yes-button:yes的按钮可以改名
--no-button:no的按钮可以改名
--yesno:布尔值框,后面可以加框内的内容

交互式输入框

语法:
whiptail --title "<标题>" --inputbox "<信息>" <高度> <宽度> <默认值>

实践

whiptail --title "曾老湿跳板机-10.0.0.61" --inputbox "请输入一个文件名路径:" 10 60 /etc/passwd 3>&1 1>&2 2>&3



## 交互式输入框
source_file=`whiptail --title "曾老湿跳板机-10.0.0.61" --inputbox "请输入源文件位置:" 10 60 3>&1 1>&2 2>&3`
if [ $? -eq 0 ];then
        dest_file=`whiptail --title "曾老湿跳板机-10.0.0.61" --inputbox "请输入对端存放位置:" 10 60 /etc/passwd 3>&1 1>&2 2>&3`
        if [ $? -eq 0 ];then
                scp $source_file 172.16.1.7:$dest_file &>/dev/null
        else
                echo '请输入一个目标路径'
        fi
else
        echo '请输入一个源文件路径'
fi


## 交互式输入框
source_file=`whiptail --title "曾老湿跳板机-10.0.0.61" --inputbox "请输入源文件位置:" 10 60 3>&1 1>&2 2>&3`

whiptail --title "$HOSTNAME Disk Info" --msgbox "$source_file" 30 60


## 选项
--inputbox:交互式输入框
10 60 /etc/passwd
10:高度
60:宽度
/etc/passwd:默认值


## 返回值
选择OK:0
选择Cancel:1

命令本身带输入内容,输入内容可以保存在变量中

密码输入框

PASSWD=`whiptail --title "曾老湿跳板机-10.0.0.61" --passwordbox "请输入一个密码名路径:" 10 60  3>&1 1>&2 2>&3`


# 实战
## 密码输入框
PASSWD=`whiptail --title "曾老湿跳板机-10.0.0.61" --passwordbox "请输入一个密码名路径:" 10 60  3>&1 1>&2 2>&3`
if [ $? -eq 0 ];then
        if [ ${#PASSWD} -ne 0 ];then
                echo "密码是:$PASSWD"
        else
                echo "密码为空"
        fi
else
        echo '选择了取消'
fi

# 返回值
选择OK:0
选择Cancel:1

命令本身带输入内容,输入内容可以保存在变量中

菜单栏

## 菜单栏
OPTION=$(whiptail --title "曾老湿跳板机-10.0.0.61" --menu "根据菜单选吧老弟" 30 60 10 \
"1" "lb01" \
"2" "lb02" \
"3" "web01" \
"4" "web02" \
"5" "web03" 3>&1 1>&2 2>&3)

--menu:菜单栏
30:高度
60:宽度
10:菜单显示几行内容


## 返回值
选择OK:0
选择Cancel:1


选择的值,会将序号保存在OPTION变量中

## 实战
## 菜单栏
OPTION=$(whiptail --title "曾老湿跳板机-10.0.0.61" --menu "根据菜单选吧老弟" 30 60 10 \
"1" "lb01" \
"2" "lb02" \
"3" "web01" \
"4" "web02" \
"5" "web03" 3>&1 1>&2 2>&3)

if [ $? -eq 0 ];then
        case $OPTION in
        1)
                echo "连接 lb01"
                ;;
        3)
                ssh 172.16.1.7
                ;;
        esac
else
        echo "选择了退出"

fi

单选框

## 语法
DISTROS=$(whiptail --title "曾老湿跳板机-10.0.0.61" --radiolist "请在下面内容选择一项,上下左右移动,空格选中" 20 60 10 \
"send" "发送文件" OFF \
"useradd" "创建用户" OFF \
"ssh" "远程连接" ON \
"mem" "查看内存" OFF 3>&1 1>&2 2>&3)

## 选项
--radiolist:单选框
OFF:默认没有被选中
ON:默认被选中

多选没有意义,后面的选项会覆盖前面的选项

## 返回值
选择OK:0
选择Cancel:1

多选框

# 语法:
DISTROS=$(whiptail --title "曾老湿跳板机-10.0.0.61" --checklist "请在下面内容选择一项,上下左右移动,空格选中" 20 60 10 \
"send" "发送文件" ON \
"useradd" "创建用户" OFF \
"ssh" "远程连接" OFF \
"mem" "查看内存" OFF 3>&1 1>&2 2>&3)


## 多选框实战

send(){
        echo 执行send函数
}

mem(){
        echo 执行mem函数
}

DISTROS=$(whiptail --title "曾老湿跳板机-10.0.0.61" --checklist "请在下面内容选择一项,上下左右移动,空格选中" 20 60 10 \
"send" "发送文件" ON \
"useradd" "创建用户" OFF \
"ssh" "远程连接" OFF \
"mem" "查看内存" OFF 3>&1 1>&2 2>&3)

echo $?
echo $DISTROS

for n in $DISTROS;do
        ${n//\"/''}
done

## 返回值:
选择OK:0
选择Cancel:1

进度条

{
    for ((i = 0 ; i <= 100 ; i+=30)); do
        sleep 1
        echo $i
    done
} | whiptail --gauge "等一下子,正在安装" 6 60 0

标签:10,跳板,title,--,60,whiptail,模块,##,图形化
来源: https://www.cnblogs.com/wangchengww/p/16525747.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有