需求描述:
研发人员经常需要导出应用日志,将操作傻瓜化,有助于运维休假。
问题分析:
应用名称设置编号,脚本接收输入编号,导出对应的日志并保存。
应用场景:
重复操作,简单化、傻瓜化让非技术人员也可以操作。
如下图脚本执行界面效果图。
具体shell脚本如下:
#!/bin/bash#AUTHOR : Created by YaoButing#PLATFORM : CentOS Linux release 7.8.2003(2003)#VERSION : 3.0#DATE : 2021-09-08#DESCRIPTION : This script is used to muanual download k8s logs.###############################################################################NUMBER=100cd /data/logswhile (($NUMBER>0))do echo " 请选择需要导出日志的应用序号 "echo "*********************************************************************"echo "* *" echo "* [ 101 ].AAAAA [ 111 ].BBBBB *" echo "* *" echo "* [ 102 ].CCCCC [ 112 ].DDDDD *" echo "* *"echo "*********************************************************************"echo " 按 0 推出脚本 " echo " " read -p "请输入将要执行的动作序号:" NUMBER echo " " echo " " if (($NUMBER==101)) then echo "####-- 101 --### 导出 AAAAA 日志 #######################" for pod in `kubectl get pod -n CSDN | grep AAAAA | awk '{print $1}'` do timeout 15 kubectl logs -f $pod -n CSDN > /data/logs/AAAAA-`date "+%Y-%m-%d-%H-%M-%S"`.log echo " $pod 日志已导出......" done tar -zcPvf /data/logs/AAAAA-`date "+%Y-%m-%d-%H"`.tar.gz /data/logs/AAAAA-`date "+%Y-%m-%d-%H"`*.log rm -rf /data/logs/*.log echo "####-- 101 --### 导出 AAAAA 日志 #######################" elif (($NUMBER==102)) then echo "####-- 102 --### 导出 BBBBB 日志 #######################" for pod in `kubectl get pod -n CSDN | grep BBBBB | awk '{print $1}'` do timeout 15 kubectl logs -f $pod -n CSDN > /data/logs/BBBBB-`date "+%Y-%m-%d-%H-%M-%S"`.log echo " $pod 日志已导出......" done tar -zcPvf /data/logs/BBBBB-`date "+%Y-%m-%d-%H"`.tar.gz /data/logs/BBBBB-`date "+%Y-%m-%d-%H"`*.log rm -rf /data/logs/*.log echo "####-- 102 --### 导出 BBBBB 日志 #######################" elif (($NUMBER==111)) then echo "####-- 111 --### 导出 CCCCC 日志 #######################" for pod in `kubectl get pod -n CSDN | grep CCCCC | awk '{print $1}'` do timeout 15 kubectl logs -f $pod -n CSDN > /data/logs/CCCCC-`date "+%Y-%m-%d-%H-%M-%S"`.log echo " $pod 日志已导出......" done tar -zcPvf /data/logs/CCCCC-`date "+%Y-%m-%d-%H"`.tar.gz /data/logs/CCCCC-`date "+%Y-%m-%d-%H"`*.log rm -rf /data/logs/*.log echo "####-- 111 --### 导出 CCCCC 日志 #######################" elif (($NUMBER==112)) then echo "####-- 112 --### 导出 DDDDD 日志 #######################" for pod in `kubectl get pod -n CSDN | grep DDDDD | awk '{print $1}'` do timeout 15 kubectl logs -f $pod -n CSDN > /data/logs/DDDDD-`date "+%Y-%m-%d-%H-%M-%S"`.log echo " $pod 日志已导出......" done tar -zcPvf /data/logs/AAAAA-`date "+%Y-%m-%d-%H"`.tar.gz /data/logs/DDDDD-`date "+%Y-%m-%d-%H"`*.log rm -rf /data/logs/*.log echo "####-- 112 --### 导出 DDDDD 日志 #######################" elif (($NUMBER==0)) then echo "###################--- 程序即将退出 ---##################" else echo "##############---输入错误,请按照指定应用序号输入---################" fiecho " " echo "--- 导出日志存放路径 /data/logs/ 等待返回选择页面或者按 0 退出 -------" echo " "sleep 10done