ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

shell图形化界面

2022-07-27 19:31:54  阅读:170  来源: 互联网

标签:shell 界面 title -- 60 whiptail 172.16 OFF 图形化


shell图形化界面

whiptail

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

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

消息框

#!/bin/bash
whiptail --title "$HOSTNAME disk info" --msgbox "`df -h`" 30 60

--title		# 指定标题内容
--msgbox	# 指定信息内容
30			# 指定消息框为30
60			# 指定信息框宽度为60

$? 0

布尔值选择框

# 布尔值选择框
#!/bin/bash
whiptail --title "你确定要这么做" --yesno "请做出你的选择" 30 60
echo $?

yes :0
no : 1

# 案例
#!/bin/bash
whiptail --title "你的性别"  --yes-button "男" --no-button "女"  --yesno "请做出你的选择" 30 60
echo $?

交互式输入框

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


#!/bin/bash
a=`whiptail --title "跳板机"  --inputbox "请输入ip地址" 10 60 10.0.0.7 3>&1 1>&2 2>&1 `
if [ $? -eq 0 ];then
        ssh $a
else
        echo 'bey bey'
fi

# 选项
--inputbox: 交互式
10	:高度
60 :宽度
10.0.0.7 :默认值

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

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

密码输入框

pass=`whiptail --title "pass" --passwordbox "请输入你的密码:" 10 60 3>&1 1>&2 2>&3`
if [ $? -eq 0 ];then
        if [ $pass == '1111' ];then
                echo "密码是$pass"
        else
                echo '密码错误'
        fi

else
        echo "bey bey"
fi



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

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

菜单栏

# 菜单栏
a=$(whiptail --title "家里" --menu "根据菜单选" 30 60 3 \
"1" "lb01"  \
"2" "lb2" \
"3" "lb03" \
"4" "lb04" \
"5" "lb05" \
"6" "lb06"  3>&1 1>&2 2>&3)

--menu		# 菜单栏
30			# 高度
60			# 宽度
3			# 菜单显示多少行内容

# 返回值
OK :0
Cancel 	:1

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

单选框

# 语法
a=$(whiptail --title "家里" --radiolist "根据菜单选" 30 60 3 \
"1" "lb01" OFF  \
"2" "lb2"  ON \
"3" "lb03" OFF \
"4" "lb04" OFF \
"5" "lb05" OFF \
"6" "lb06" OFF 3>&1 1>&2 2>&3)

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

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

# 返回值
OK :0
Cancel 	:1

多选框

# 语法

a=$(whiptail --title "家里" --checklist "根据菜单选" 30 60 3 \
"1" "lb01" OFF  \
"2" "lb2"  ON \
"3" "lb03" OFF \
"4" "lb04" OFF \
"5" "lb05" OFF \
"6" "lb06" OFF 3>&1 1>&2 2>&3)

进度条

{
        for ((i = 0 ; i <= 100 ; i+=1));do
                sleep 10
                echo $i
        done
} | whiptail --gauge "让子弹飞一会" 6 60 10

作业

搭建图形化跳板机

#!/bin/bash
nginx (){
	ps=`ssh 172.16.1.$1 "ps -ef | grep [n]ginx |wc -l"`
	if [ $ps -ne 0 ];then
		whiptail --title "172.16.1.$1 nginx状态" --msgbox "nginx进程存活 $ps" 30 60
	else
		whiptail --title "172.16.1.$1 nginx状态" --msgbox "nginx不存活 已经没有进程" 30 60
	fi
}
free (){
	ssh 172.16.1.$1 free -m &>/dev/null
	if [ $? -eq 0 ];then
	  whiptail --title "172.16.1.$1 内存" --msgbox "`ssh 172.16.1.$1 free -m`" 30 60
	else
	  whiptail --title "172.16.1.$1 内存" --msgbox "主机不存活" 30 60
	fi
}
key (){
	ls -l ~/.ssh/id_rsa &>/dev/null 
	if [ $? -eq 0 ];then
		key=`ssh 172.16.1.$1 "cat ~/.ssh/authorized_keys |grep -w m01|wc -l"`
		if [ $key == '1' ];then
			ssh 172.16.1.$1
		else
			whiptail --title "你确定要这么做吗?" --yesno "客户端主机还没有创建密钥是否创建" 10 60
			if [ $? -eq 0 ];then
				 sshpass -p 1 ssh-copy-id -o 'StrictHostKeyChecking no' -i ~/.ssh/id_rsa.pub root@172.16.1.$1 &>/dev/null && \
                                 action "172.16.1.$1 send public key " /bin/true  return 1 || \
                                 action "172.16.1.$1 send public key " /bin/false
				 ssh 172.16.1.7
			fi
		fi
	else
		whiptail --title "你确定要这么做吗?" --yesno "主机还没有创建密钥是否创建" 10 60
			if [ $? -eq 0 ];then
			ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa &>/dev/null
		fi
	fi
}

while true;do
	a=$(whiptail --title "菜单" --menu "根据菜单选" 30 60 5 \
	"1" "查看磁盘信息"  \
	"2" "连接虚拟机" \
	"3" "传输文件" \
	"4" "game" \
	"5" "查看内存" \
	"6" "退出" \
	"7" "查看nginx状态" 3>&1 1>&2 2>&3)
	case $a in
	1)
		b=$(whiptail --title "选择要查看的硬盘的主机" --radiolist "根据菜单选" 30 60 3 \
		"1" "web01-172.16.1.7" OFF  \
		"2" "web02-172.16.1.8"  ON \
		"3" "nfs-172.16.1.31" OFF \
		"4" "backup-172.16.1.41" OFF \
		"5" "db01-172.16.1.51" OFF 3>&1 1>&2 2>&3)

		case $b in
			1)
				whiptail --title "$HOSTNAME disk info" --msgbox "`ssh 172.16.1.7 df -h`" 30 60
			;;
			2)
				whiptail --title "$HOSTNAME disk info" --msgbox "`ssh 172.16.1.8 df -h`" 30 60
			;;
			3)
				whiptail --title "$HOSTNAME disk info" --msgbox "`ssh 172.16.1.31 df -h`" 30 60
			;;
			4)
				whiptail --title "$HOSTNAME disk info" --msgbox "`ssh 172.16.1.41 df -h`" 30 60
			;;
			5)
				whiptail --title "$HOSTNAME disk info" --msgbox "`ssh 172.16.1.51 df -h`" 30 60
			;;
		esac		

	;;
	2)
	         c=$(whiptail --title "菜单" --radiolist "你要连接的主机" 30 60 3 \
                "1" "web01-172.16.1.7" OFF  \
                "2" "web02-172.16.1.8"  ON \
                "3" "nfs-172.16.1.31" OFF \
                "4" "backup-172.16.1.41" OFF \
                "5" "db01-172.16.1.51" OFF 3>&1 1>&2 2>&3)	
		case $c in 
			1)
				key 7
			;;
			2)
				key 8
			;;
			3)
				key 31
			;;
			4)
				key 41
			;;
			5)
				key 51
		esac

	;;
	3)
		fire=$(whiptail --title "选择要下发文件的主机" --checklist "请在下面内容选择一项,上下左右移动,空格选中" 20 60 10 \
		"1" "web01-172.16.1.7" OFF \
		"2" "web02-172.16.1.8" OFF \
		"3" "nfs-172.16.1.31" OFF \
		"4" "backup-172.16.1.41" OFF \
		"5" "db01-172.16.1.51" OFF 3>&1 1>&2 2>&3)
		yuan_fire=`whiptail --title "xxxx" --inputbox "请输入源文件名路径:" 10 60 /etc/passwd 3>&1 1>&2 2>&3`
        mu_fire=`whiptail --title "xxxx" --inputbox "请输入目标文件名路径:" 10 60 /etc/passwd 3>&1 1>&2 2>&3`
			for i in $fire;do
			   if [ ${i//\"/''} == '1' ];then
			   	scp  $yuan_fire  172.16.1.7:$mu_fire
			   elif [ ${i//\"/''} == '2' ];then
			   	scp  $yuan_fire   172.16.1.8:$mu_fire	
			   elif [ ${i//\"/''} == '3' ];then
                                scp  $yuan_fire   172.16.1.31:$mu_fire
                           elif [ ${i//\"/''} == '4' ];then
                                scp  $yuan_fire   172.16.1.41:$mu_fire
                           elif [ ${i//\"/''} == '5' ];then
                                scp  $yuan_fire   172.16.1.51:$mu_fire
				
			   fi	
			done
	;;
	4)

	;;
	5)
                d=$(whiptail --title "选择要查看的内存的主机" --radiolist "根据菜单选" 30 60 3 \
                "1" "web01-172.16.1.7" OFF  \
                "2" "web02-172.16.1.8"  ON \
                "3" "nfs-172.16.1.31" OFF \
                "4" "backup-172.16.1.41" OFF \
                "5" "db01-172.16.1.51" OFF 3>&1 1>&2 2>&3)	
		case $d in
			1)
				free 7
			;;
			2)
				free 8
			;;
			3)
				free 31
			;;
			4)	
				free 41
			;;
			5)
				free 51
			;;
		
		esac
	;;
	6)
	pass=`whiptail --title "请输入密码" --passwordbox "请输入你的密码: " 10 60 3>&1 1>&2 2>&3`
	if [ $pass == 'qqqqq' ];then
		exit
	else
		whiptail --title "密码错误" --msgbox "密码错误" 30 30
	fi
	;;	
	7)
                e=$(whiptail --title "选择要查看的nginx的主机" --radiolist "根据菜单选" 30 60 3 \
                "1" "web01-172.16.1.7" OFF  \
                "2" "web02-172.16.1.8"  ON \
                "3" "nfs-172.16.1.31" OFF \
                "4" "backup-172.16.1.41" OFF \
                "5" "db01-172.16.1.51" OFF 3>&1 1>&2 2>&3)
		case $e in
			1)
				nginx 7
			;;
			2)
				nginx 8
			;;
			3)
				nginx 31
			;;
			4)
				nginx 41
			;;
			5)
				nginx 51
			;;		
		esac
	esac
done

标签:shell,界面,title,--,60,whiptail,172.16,OFF,图形化
来源: https://www.cnblogs.com/ghjhkj/p/16526022.html

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

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

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

ICode9版权所有