运维工程师如何用Shell脚本自动生成日报:从history到企业微信推送

4 阅读1分钟

运维工程师如何用Shell脚本自动生成日报:从history到企业微信推送

前言

写日报是大多数公司的硬性要求,但对于运维工程师来说,一天处理的事情又杂又多,到了下班时间根本想不起来干了啥。本文分享一套实用的日报自动化方案,将日报撰写时间从30分钟压缩到5分钟。

问题分析

运维日报的痛点:

  • 一天处理几十个事务,下班时记不住
  • 手动整理耗时,容易遗漏
  • 格式每天重复,纯体力劳动

方案一:history命令回溯操作记录

基础用法

# 查看今天所有操作记录
history | grep "$(date +%Y-%m-%d)"

进阶:提取关键操作

#!/bin/bash
# daily_ops.sh - 提取今日关键操作

echo "=== $(date +%Y-%m-%d) 操作回顾 ==="

# 过滤无意义命令(ls, cd, cat等)
history | grep "$(date +%Y-%m-%d)" | \
  grep -vE "^[0-9]+\s+(ls|cd|cat|clear|pwd|exit|history)" | \
  awk '{$1=""; print NR". "$0}'

多服务器汇总

# 从多台服务器收集操作记录
for host in server1 server2 server3; do
  echo "--- $host ---"
  ssh $host "history | tail -50" 2>/dev/null
done

方案二:浏览器历史辅助回忆

Chrome地址栏输入 chrome://history,按时间线回顾:

  • 查了哪些文档/Wiki
  • 处理了哪些工单(Jira/禅道等)
  • 查阅了哪些技术资料

命令行方式提取Chrome历史

# macOS
sqlite3 ~/Library/Application\ Support/Google/Chrome/Default/History \
  "SELECT datetime(last_visit_time/1000000-11644473600,'unixepoch','localtime'), url, title 
   FROM urls 
   WHERE date(last_visit_time/1000000-11644473600,'unixepoch','localtime') = date('now')
   ORDER BY last_visit_time DESC;"

方案三:日报模板 + 快捷短语

固定模板

【今日完成】
1. 
2. 
3. 
【明日计划】
1. 
【需要协调】
无

输入法快捷短语

将上述模板设置为输入法快捷短语:

  • 搜狗输入法:设置 → 高级 → 自定义短语 → 添加 rb 触发
  • 微软输入法:设置 → 用户自定义短语

输入 rb 直接弹出完整模板,只需填写内容。

方案四:Shell脚本自动生成日报

完整脚本

#!/bin/bash
# auto_daily_report.sh
# 自动汇总今日工作并生成日报

DATE=$(date +%Y-%m-%d)
REPORT_FILE="/tmp/daily_report_${DATE}.md"

cat > "$REPORT_FILE" << EOF
# 工作日报 - ${DATE}

## 今日完成

### 服务器操作
$(history | grep "$DATE" | grep -vE "(ls|cd|cat|clear|pwd)" | tail -10 | awk '{$1=""; print "- "$0}')

### Git提交记录
$(git log --oneline --since="$DATE 00:00" --until="$DATE 23:59" 2>/dev/null | awk '{print "- "$0}')

### 系统巡检
- CPU最高使用率: $(top -bn1 | grep "Cpu" | awk '{print $2}')%
- 内存使用率: $(free -m | awk 'NR==2{printf "%.1f%%", $3*100/$2}')
- 磁盘使用率: $(df -h / | awk 'NR==2{print $5}')

## 明日计划
1. 

## 需要协调
无
EOF

echo "日报已生成: $REPORT_FILE"
cat "$REPORT_FILE"

定时执行 + 推送

# crontab 每天17:50自动生成日报
50 17 * * 1-5 /home/user/auto_daily_report.sh

# 通过企业微信机器人推送
curl -X POST "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_KEY" \
  -H 'Content-Type: application/json' \
  -d "{\"msgtype\":\"markdown\",\"markdown\":{\"content\":\"$(cat $REPORT_FILE)\"}}"

总结

方案适用场景耗时
history回溯命令行操作为主3分钟
浏览器历史Web工单为主5分钟
模板快捷短语通用场景2分钟
Shell自动生成全自动化0分钟

从30分钟到5分钟,再到全自动,日报不再是负担。