各位运维的兄弟们不知道各位在写脚本的时候,比如说写一个长时间运行在后台的脚本的时候是否有想过一个问题,我们可能涉及到输出日志的操作,那么大家是否有想过如果说我们输出的日志都是没有任何的识别,怎么办?这便是大家今天看到这篇文章的原因了,接下来我们来看看具体的实现吧。 |
其实这篇文章早在去年我就已经做过了,只不过是最近在翻旧脚本的时候翻到了一个脚本,发现是自己写的脚本,然后下面给大家看看脚本是干嘛用的,等下再给大家详细说一说。 |
#!/bin/bash
function log() {
case $1 in
"info")
echo -e `date '+%Y-%m-%d %H:%M:%S'`"\t[\e[32m INFO \e[0m] $2"
;;
"error")
echo -e `date '+%Y-%m-%d %H:%M:%S'`"\t[\e[31m error \e[0m] $2"
;;
*)
echo -e `date '+%Y-%m-%d %H:%M:%S'`"\t[\e[32m INFO \e[0m] $2"
esac
}
function check_api(){
while true;
do
sleep 10
nslookup www.kudevops.cn >>/dev/null
if [ $? -eq 0 ];then
log info "Request right" >>~/check_api.log
else
log error "Request error" >>~/check_api_error.log
fi
done
}
case $1 in
"run")
check_api
;;
"-h")
echo "run Perform testing"
;;
"*")
echo "-h Get help"
;;
esac
从这里不难看出这是一个简单的前台运行程序,用于检查域名是否可以解析,这边可以看到我的一个函数是log,这个就是我今天给大家介绍的函数,我们下面把这个函数拿出来实战一下看看是什么样子, |
#!/bin/bash
function log() {
case $1 in
"info")
echo -e `date '+%Y-%m-%d %H:%M:%S'`"\t[\e[32m INFO \e[0m] $2"
;;
"error")
echo -e `date '+%Y-%m-%d %H:%M:%S'`"\t[\e[31m error \e[0m] $2"
;;
*)
echo -e `date '+%Y-%m-%d %H:%M:%S'`"\t[\e[32m INFO \e[0m] $2"
esac
}
log info "This is yes msg!"
log error "This is no msg!"

这边给大家解释下,首先我们看函数,log是主函数,case使用了$1那么证明后面log函数后面又可以传进去一个参数,也就是 info和error,那么它们参数下面做了什么呢?往下看其实就是输出带颜色的字体了,我们可以看到echo后面有个$2,那么这就是shell里面的位置参数,也就是我们调用函数输入的参数,最后我们看看我的调用,可以看到调用了函数,然后使用函数下的方法 info和error,然后最后传参给$2,就是整个函数的作用了。大家可以去研究一下可以应用在什么地方,我这边就单纯的做一个简单的测试网站的脚本,这边我给大家做的例子就在上面,让后我们尝试运行一下。
[root@kubernetes-master-1 ~]# check-api run
# 因为是前台程序,所以大家可以选择合适的管理方式来托管起来,我这边就单纯的跑前台了,它的作用就是去检测我的网站是否可以被解析
[root@kubernetes-master-1 ~]# ls
anaconda-ks.cfg check_api.log initfiles
[root@kubernetes-master-1 ~]# cat check_api.log
2022-09-20 01:06:58 [ INFO ] Request right
2022-09-20 01:07:08 [ INFO ] Request right
2022-09-20 01:07:18 [ INFO ] Request right
2022-09-20 01:07:28 [ INFO ] Request right
2022-09-20 01:07:38 [ INFO ] Request right
# 这是它输出的日志,我把日志路径写死了,是在运行脚本用户的加目录下,当然了错误日志也是有的。
[root@kubernetes-master-1 ~]# cat check_api_error.log
2022-09-20 01:10:23 [ error ] Request error
2022-09-20 01:10:33 [ error ] Request error
2022-09-20 01:10:43 [ error ] Request error
2022-09-20 01:10:53 [ error ] Request error
# 这就是简单一个小脚本了,希望大家可以点赞支持一下。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 大模型 Token 究竟是啥:图解大模型Token
· 35岁程序员的中年求职记:四次碰壁后的深度反思
· 继承的思维:从思维模式到架构设计的深度解析
· 如何在 .NET 中 使用 ANTLR4
· 后端思维之高并发处理方案
· 感觉程序员要被 AI 淘汰了?学什么才有机会?
· BotSharp + MCP 三步实现智能体开发
· “你觉得客户需要”是杀死TA的最后一根稻草 | IPD集成产品开发
· dify升级,PostgreSQL数据库字段更新处理
· AI团队比单打独斗强!CrewAI多智能体协作系统开发踩坑全解析