Shell脚本——menu菜单(read、while、case的使用)
###############################################################################
# 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技能,期望投身财力雄厚的教育、科研、制造行业,
只为不被外包(恶劣的大环境)甚至云计算(半国企)行业的自然淘汰,寻找变形金刚般勇于奋进的儿时梦。
###############################################################################