Shell图形化工具dialog使用简述
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
dialog安装
yum install -y dialog
dialog 常用命令
liunx 下的dialog 工具是一个可以和shell脚本配合使用的文本界面下的创建对话框的工具。
每个对话框提供的输出有两种形式
- 将所有输出到stderr 输出不显示到屏幕。
- 使用退出状态码“OK”为0“NO”为1,"ESC"为255
命令选项
通用选项 common options(这个选项来设置dialog box的背景颜色和 标题等)[–title
窗体类型
常见的对话框控件选项有
[ --calendar ] 提供了一个日历让你可以选择日期
[ --checklist ] 允许你显示一个选项列表每个选项都可以被单独的选择 (复选框)
[ --from ] 允许您建立一个带标签的文本字段并要求填写
[ --fselect ] 提供一个路径让你选择浏览的文件
[ --gauge ] 显示一个表呈现出完成的百分比就是显示出进度。
[ --infobox ] 显示消息后没有等待响应对话框立刻返回但不清除屏幕 (信息框)
[ --inputbox ] 让用户输入文本 (输入框 )
[ --inputmenu ] 提供一个可供用户编辑的菜单 可编辑的菜单框
[ --menu ] 显示一个列表供用户选择 (菜单框)
[ --msgbox ] 显示一条消息并要求用户选择一个确定按钮 (消息框 )
[ --pause ] 显示一个表格用来显示一个指定的暂停期的状态
[ --passwordbox ] 显示一个输入框它隐藏文本
[ --passwordfrom ] 显示一个来源于标签并且隐藏的文本字段
[ --radiolist ] 提供一个菜单项目组只有一个项目可以选择 (单选框 )
[ --tailbox ] 在一个滚动窗口文件中使用tail命令来显示文本
[ --tailboxbg] 跟tailbox类似但是在background模式下操作
[ --textbox ] 在带有滚动条的文本框中显示文件的内容 (文本框)
[ --timebox ] 提供一个窗口选择小时分钟秒
[ --yesno ] 提供一个带有yes和no按钮的简单信息框 (是/否框)
实战基于华为云k8s集群
#!/bin/bash
##qjzhao 20230202
log(){
dialog --backtitle "pms30" --title "目录" --inputbox "输入您要查询的微应用" 10 30 2>menu
value1=`cat menu`
kubectl get pods --all-namespaces |grep "$value1" >/dev/null
kubectl get pods --all-namespaces |grep "$value1"|awk '{print FNR " " $2" "$1}'>menu
value=`cat menu`
dialog --backtitle "pms30" --radiolist "根据您的需求做出选择" 20 60 7 $value 2>menu
dialog --backtitle "pms30" --title "目录" --inputbox "请输入你要查询日志的行数" 10 30 2>row
aa=`cat menu`
pod=`kubectl get pods --all-namespaces |grep "$value1"|awk '{print FNR " " $2" "$1}'|grep "$aa"|awk '{print $2}'`
rows=`cat row`
echo '' >log
`ps -ef|grep "kubectl logs"|grep -v "color=auto"|awk '{print $2}'|xargs kill -9`
dialog --backtitle "pms30" --title "LOG VIEW" --msgbox "1s后即将展示日志" 8 30
clear
sleep 1
kubectl logs -f $pod --tail=$rows -n pms30 >log &
dialog --backtitle "pms30" --title "LOG VIEW" --tailbox log -1 1000
}
save(){
rm -rf /tmp/*.log
rm -rf /log/*.log
dialog --backtitle "pms30 作者:赵权瑾" --title "查询" --inputbox "输入您要查询的微应用" 10 30 2>menu
value1=`cat menu`
kubectl get pods --all-namespaces |grep "$value1" >/dev/null
kubectl get pods --all-namespaces |grep "$value1"|awk '{print FNR " " $2" "$1}'>menu
value=`cat menu`
dialog --backtitle "pms30 作者:赵权瑾" --checklist "根据您的需求做出选择(可批量选择)" 20 60 7 $value 2>menu
dialog --backtitle "pms30 作者:赵权瑾" --title "row" --inputbox "请输入你要保存日志的行数" 10 30 2>row
aa=`cat menu|xargs -n 1`
aas=`cat menu|xargs -n 1|wc -l`
rows=`cat row`
echo ''> menu1
for a in $aa
do
pod= kubectl get pods --all-namespaces|grep "$value1"|awk '{print FNR " " $2" "$1}'|grep "^$a"|awk '{print $2}' >>menu1
done
grep -v "^$" menu1 >menu2
cc1=`cat menu2|awk '{print FNR " " $1}'|awk '{print $1}'`
for c in $cc1
do
pod1=`cat menu2|awk '{print FNR " " $1}'|awk '{print $1 " " $2}'|grep "^$c" |grep $value1|awk '{print $2}'`
timeout -s 9 15 kubectl logs -f $pod1 --tail=$rows -n pms30 >/log/$pod1.log|for i in {1..100}
do echo $i
sleep 0.15
done|dialog --backtitle "pms30 作者:赵权瑾" --title "保存日志" --gauge "本次一共保存$aas个日志,正在保存第$c个日志 $pod1.log(单个日志保存时间为15s)请稍后……" 10 120
done
##发送邮件
#echo "hello word"|mail -s "this is test" gwscdl_zyywzt@sc.sgcc.com.cn
`tar zcvf /log/$value1.tar.gz /log/$value1*.log`
echo "本次一共保存$aas个日志,清单如下:`\n` `cat menu2`"|mail -s "$value1日志保存" -a /log/$value1*.tar.gz gwscdl_pms30@sc.sgcc.com.cn
rm -rf /log/$value1*.tar.gz
dialog --backtitle "pms30 作者:赵权瑾" --title "LOG" --msgbox "本次日志已保存到/log/并发送邮件至gwscdl_pms30@sc.sgcc.com.cn(邮件发送稍有延迟),请及时查验再次执行保存日志时,本次日志将会被删除" 8 150
}
del_noactive_pod(){
kubectl get pods -A|egrep -v "Running|NAME"|awk '{print $2}'>delpod
delpod=`cat delpod`
for i in $delpod
do
kubectl delete pod $i -n pms30
done|dialog --backtitle "pms30 作者:赵权瑾" --title "删除pod" --gauge "删除启动失败pod中请稍后……" 10 50
}
menu(){
dialog --backtitle "pms30 作者:赵权瑾" --title "目录" --menu "根据您的需求做出选择" 20 50 10 \
1 "查询微应用日志" \
2 "删除特定的pod(服务器运维人员专)" \
3 "微应用日志保存" \
4 "在线修改副本数(运维人员专用)" \
5 "查看集群当前正在使用的ImageVersion" \
6 "查看集群Node污点" \
7 "删除启动失败的POD" \
0 "退出shell" 2>./menu
num=`cat menu`
case $num in
1)
log
;;
2)
;;
3)
save
;;
4)
;;
5)
;;
6)
;;
7)
del_noactive_pod
;;
0)
#dialog --backtitle "pms30 作者:赵权瑾" --title "EXIT" --msgbox "程序即将退出" 8 20
exit 0
;;
esac
clear
}
while :
do
clear
menu
done
实战截图