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