首页 > 系统相关 >Shell脚本——menu菜单(read、while、case的使用)

Shell脚本——menu菜单(read、while、case的使用)

时间:2024-09-16 23:25:19浏览次数:10  
标签:case Shell log read 系统 choice etc entry echo

###############################################################################

# Shell脚本提高工作效率;

# Shell脚本定义功能函数;

# Shell脚本定义功能分支过多,通过相对路径调用功能Shell脚本,另起炉灶。

# Shell脚本通过外部交互输入变量值,例如:read -p "变量含义文本信息:" 变量名;

# Shell脚本通过pwd查看脚本当前位置的绝对路径,例如:root_dir="`pwd ./`";

# Shell脚本定义普通变量,例如:hc_dir="./bdi/hc/";

###############################################################################

#Shell脚本样例:

# 功能

# while永久循环;

# 选择相应1-14菜单项,通过Summary_menu()函数打印菜单;

# 通过主程序中的read -p提示输入1-14字符串值,传参给变量choice;

# 通过case接收choice字符串值,交互窗口打印当前所选菜单项及调用功能函数返回值、log_entry()打印时间及用户操作日志到指定log文件;

###############################################################################

# 定义打印菜单函数
Summary_menu() {
echo "***************************************************"
echo "# 请选择要执行的操作:"
echo "1. 系统版本参数:检查系统版本及内核版本;"
echo "2. 系统内存参数:检查系统内存free、内存edac、slab、ringbuffer等;"
echo "3. 系统CPU参数:检查系统CPU包含/proc/cpuinfo、sar-u、sar-p、top、cgroup;"
echo "4. 系统DISK参数:检查系统DISK性能包含iostat、sar-d、sar-b、pvs/pvdisplay/vgs/vgdisplay/vgreduce/lvs/lvdisplay/lvscan;"
echo "5. 系统队列参数:检查系统队列拥塞包含sar-q;"
echo "6. 系统内核参数:检查系统内核参数包含sysctl.conf;"
echo "7. 系统安全参数:检查系统安全包含/etc/security/access.conf、/etc/selinux/config、/etc/sysconfig/iptables;"
echo "8. 问题:系统僵尸进程排查:检查系统D进程包含top、ps;"
echo "9. 问题:系统网络排查:检查/etc/networking、/etc/sysconfig/network-scripts/*、;"
echo "10. 问题:系统切换用户sudo -i/su - gk认证失败,检查/var/log/secure、/etc/ssh/sshd、/etc/pam.d/su、/etc/pam.d/sudo"
echo "11. 软件openssh参数:检查软件openssh配置包含/etc/ssh/sshd_config、/etc/pam.d/sshd;"
echo "12. Kubernetes:组件ETCD节点恢复;"
echo "13. 待开发;"
echo "14. 退出;"
echo "***************************************************"
}

 

# 记录日志
log_entry() {
   local choice=$1
   echo "$(date '+%Y-%m-%d %H:%M:%S') - 用户选择了操作: $choice" >> ../logs/menu.log


#menu模块

while true; do   Summary_menu

   read -p "请输入选项[1-14]: " choice

   case $choice in
       1)
           echo "1. 检查系统版本及内核版本;"
           log_entry "$choice"
           get_os_version
           ;;
       2)
           echo "2. 系统内存参数:检查系统内存free、内存edac、slab、ringbuffer等;"
           log_entry "$choice"
           # 这里可以添加编辑文件的代码
           ;;
       3)
           echo "3. 系统CPU参数:检查系统CPU包含/proc/cpuinfo、sar-u、sar-p、top、cgroup;"
           log_entry "$choice"
           # 这里可以添加编辑文件的代码
           ;;
       4)
           echo "4. 系统DISK参数:检查系统DISK性能包含iostat、sar-d、sar-b、pvs/pvdisplay/vgs/vgdisplay/vgreduce/lvs/lvdisplay/lvscan;"
           log_entry "$choice"
           # 调用sar()函数
           check_sar_info
           ;;
       5)
           echo "5. 系统队列参数:检查系统队列拥塞包含sar-q;"
           log_entry "$choice"
           # 这里可以添加编辑文件的代码
           ;;
       6)
           echo "6. 系统内核参数:检查系统内核参数包含sysctl.conf;"
           log_entry "$choice"
           # 这里可以添加编辑文件的代码
           ;;
       7)
           echo "7. 系统安全参数:检查系统安全包含/etc/security/access.conf、/etc/selinux/config、/etc/sysconfig/iptables;"
           log_entry "$choice"
           # 这里可以添加查看文件的代码
           ;;
       8)
           echo "8. 问题:系统僵尸进程排查:检查系统D进程包含top、ps;"
           log_entry "$choice"
           # 这里可以添加编辑文件的代码
           ;;
       9)
           echo "9. 问题:系统网络排查:检查/etc/networking、/etc/sysconfig/network-scripts/*;"
           log_entry "$choice"
           # 这里可以添加编辑文件的代码
           ;;
       10)
           echo "10. 软件openssh参数:检查软件openssh配置包含/etc/ssh/sshd_config、/etc/pam.d/sshd;"
           log_entry "$choice"
           # 这里可以添加查看文件的代码
           ;;
       11)
           echo "10. 问题:系统切换用户sudo -i/su - gk认证失败,检查/var/log/secure、/etc/ssh/sshd、/etc/pam.d/su、/etc/pam.d/sudo: "
           log_entry "$choice"
           # 这里可以添加查看文件的代码
           ;;
       12)
           echo "12. Kubernetes:组件Etcd节点恢复;"
           log_entry "$choice"
           /bin/bash ./Check_K8s.sh
           ;;
       13)
           echo "13. 待开发;"
           log_entry "$choice"
           # 这里可以添加编辑文件的代码
           ;;
       14)
           echo "14. 退出;"
           log_entry "$choice"
           break
           ;;
       *)
           echo "无效的选项,请重新输入"
           ;;
   esac
   logs
done

###############################################################################
   云计算到容器化的快速转变,Shell和Python自动化已经作为基础技能,运用到快速部署、快速问题排查。

为了能跟上2019年阿里和信息部合作的小学智能python全面铺开,到如今2024年上海人工智能大会的半自动化甚至基础自动化的高效应用。
与时俱进,顺应大厂提供的大环境,品尝他们给出大数据的自动化代码或者人工智能概念,强化自身Python模块及Shell技能,期望投身财力雄厚的教育、科研、制造行业,
只为不被外包(恶劣的大环境)甚至云计算(半国企)行业的自然淘汰,寻找变形金刚般勇于奋进的儿时梦。
###############################################################################
 

 

标签:case,Shell,log,read,系统,choice,etc,entry,echo
From: https://www.cnblogs.com/gkhost/p/18416748

相关文章

  • Spread.NET 17.1.2 FOR WinForms
    Spread.NET17.1.2全球销量第一的C#.NET电子表格,拥有超过500个Excel函数在C#.NET中提供真正类似Excel的电子表格体验,且不依赖Excel。创建财务、预算/预测、科学、工程、医疗保健、保险、教育、制造和许多其他类似的业务应用程序。使用全面的API创建企业电子表......
  • SpreadJS 17.1.5 -JavaScript 电子表格组件
    SpreadJS JavaScript电子表格组件示例全球最畅销的JavaScript电子表格,包含500多个Excel函数快速提供真正类似Excel的电子表格体验-完全不依赖Excel。创建财务应用程序,仪表板,图表,数据透视表,性能基准,科学实验室笔记本以及其他类似的JavaScript电子表格应用程序......
  • Jina AI 发布 Reader-LM-0.5B 和 Reader-LM-1.5B:为网络数据处理提供多语种、长语境和
    JinaAI发布的Reader-LM-0.5B和Reader-LM-1.5B标志着小语言模型(SLM)技术的一个重要里程碑。这些模型旨在解决一个独特而具体的挑战:将开放网络中原始、嘈杂的HTML转换为干净的标记符格式。这项任务看似简单,却面临着复杂的挑战,尤其是在处理现代网络内容中的大量噪音......
  • Bert下载和使用(以bert-base-uncased为例)
    Bert官方github地址:https://github.com/google-research/bert?tab=readme-ov-file在github下载:在huggingface(地址)下载config.json和pytorch_model.bin将github下载的解压,并将huggingface下载的config.json和pytorch_model.bin放到解压后的文件夹:测试:fromtransformersimp......
  • Android HandlerThread Post后延迟7秒才执行的原因及解决方案|如何提高Android后台线程
    在Android开发中,HandlerThread是用于处理后台线程任务的常见工具。然而,有时我们会遇到这样的问题:当任务通过HandlerThread的post方法发送后,任务的执行时间会出现明显的延迟,比如7秒的延迟才执行任务。本文将深入分析这种问题的成因,探讨可能的影响因素,并提供多种优化方案,帮助开发者解......
  • 使用 Element Plus 和 FileReader 实现图片上传预览
    使用ElementPlus和FileReader实现图片上传预览在现代Web开发中,图片上传是一个常见的需求。很多时候,我们希望在图片上传到服务器之前,能够在客户端进行预览。这里,我们将使用Vue3和ElementPlus的<el-upload>组件结合FileReaderAPI来实现这一功能。1.组件模板首先,我......
  • 【webshell 检测工具】ShellSweep:一种 PowerShell/Python/Lua 工具,用于检测指定目录下
    原创Ots安全“ShellSweep”是一个PowerShell/Python/Lua工具,旨在检测指定目录中的潜在WebShell文件。ShellSheep及其工具套件会计算文件内容的熵,以估计文件成为WebShell的可能性。熵值越高,随机性就越强,这是WebShell中常见的加密或混淆代码的特征。它仅处理具有某些......
  • 【Shell】getopt、set
    getopt的用途Shell脚本中,getopt主要用于解析用户通过命令行传递的选项和参数,支持短选项(如-a)和长选项(如--all),并且可以处理带参数的选项(如-ffilename或--file=filename)。getopt的基本用法基本的getopt语法如下:getoptoptstringparametersoptstring:定义可......
  • Thread 类的基本用法
    ......
  • 工具分享 | JenkinsExploit-GUI - 一款Jenkins综合漏洞利用工具,一键getshell。
    0x00工具介绍JenkinsExploit-GUI是一款Jenkins综合漏洞利用工具。0x01下载链接JenkinsExploit-GUI下载链接:夸克网盘分享0x02功能介绍CVE-2015-8103/CVE-2016-0788CVE-2016-0792CVE-2017-1000353CVE-2018-1000600CVE-2018-1000861CVE-2018-1999002CVE-20......