本文目录导读:

#!/bin/bash
# ==============================
# 定时检查系统语言包更新脚本
# 适用于 Linux 系统 (Ubuntu/Debian, CentOS/RHEL)
# ==============================
# ---------- 配置参数 ----------
LOG_FILE="/var/log/language_package_check.log" # 日志文件路径
EMAIL_NOTIFY=false # 是否发送邮件通知 (true/false)
EMAIL_TO="admin@example.com" # 通知邮箱地址
NOTIFY_ONLY_UPDATE=true # 仅在有更新时通知 (true/false)
# ------------------------------
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color
# 函数:记录日志
log_message() {
local timestamp=$(date "+%Y-%m-%d %H:%M:%S")
echo -e "[$timestamp] $1" | tee -a "$LOG_FILE"
}
# 函数:发送邮件通知
send_email() {
local subject="$1"
local body="$2"
if [ "$EMAIL_NOTIFY" = true ]; then
echo -e "$body" | mail -s "$subject" "$EMAIL_TO"
log_message "${YELLOW}[通知] 邮件已发送至 $EMAIL_TO${NC}"
fi
}
# 检查是否以 root 权限运行
if [ "$(id -u)" -ne 0 ]; then
echo -e "${RED}[错误] 请以 root 权限运行此脚本 (使用 sudo)${NC}"
exit 1
fi
# 检测系统类型
if [ -f /etc/debian_version ]; then
OS_TYPE="debian"
PKG_MANAGER="apt"
UPDATE_CMD="apt update"
LANG_PACKAGES="language-pack-* language-support-*"
elif [ -f /etc/redhat-release ] || [ -f /etc/centos-release ]; then
OS_TYPE="redhat"
PKG_MANAGER="yum"
if command -v dnf &> /dev/null; then
PKG_MANAGER="dnf"
fi
UPDATE_CMD="$PKG_MANAGER check-update"
LANG_PACKAGES="*lang* *language* *locale*"
else
log_message "${RED}[错误] 不支持的系统类型${NC}"
exit 1
fi
log_message "${GREEN}[信息] 检测到系统类型: $OS_TYPE${NC}"
log_message "${GREEN}[信息] 开始检查语言包更新...${NC}"
# 开始记录更新信息
UPDATE_LIST=""
UPDATE_COUNT=0
# Debian/Ubuntu 系统处理
if [ "$OS_TYPE" = "debian" ]; then
# 更新包列表
apt update -qq 2>&1 | tee -a "$LOG_FILE"
# 检查可升级的语言包
UPDATE_LIST=$(apt list --upgradable 2>/dev/null | grep -E "language-pack-|language-support-" || true)
UPDATE_COUNT=$(echo "$UPDATE_LIST" | grep -c "language" || true)
if [ "$UPDATE_COUNT" -gt 0 ]; then
log_message "${YELLOW}[更新] 发现 $UPDATE_COUNT 个可更新的语言包:${NC}"
echo "$UPDATE_LIST" | tee -a "$LOG_FILE"
# 显示详细信息
echo "$UPDATE_LIST" | while read line; do
echo -e " ${YELLOW}$line${NC}" | tee -a "$LOG_FILE"
done
# 发送邮件通知
local email_body="系统语言包更新通知\n\n主机: $(hostname)\n时间: $(date)\n发现 $UPDATE_COUNT 个可更新的语言包:\n\n$UPDATE_LIST"
send_email "[语言包更新] $(hostname) - $UPDATE_COUNT 个更新可用" "$email_body"
else
log_message "${GREEN}[信息] 没有发现可更新的语言包${NC}"
if [ "$NOTIFY_ONLY_UPDATE" = false ] && [ "$EMAIL_NOTIFY" = true ]; then
send_email "[语言包检查] $(hostname) - 无更新" "主机: $(hostname)\n时间: $(date)\n没有发现可更新的语言包"
fi
fi
# Red Hat/CentOS 系统处理
elif [ "$OS_TYPE" = "redhat" ]; then
# 检查可升级的包
UPDATE_LIST=$($UPDATE_CMD 2>/dev/null | grep -E "$LANG_PACKAGES" || true)
UPDATE_COUNT=$(echo "$UPDATE_LIST" | grep -v "^$" | wc -l)
if [ "$UPDATE_COUNT" -gt 0 ]; then
log_message "${YELLOW}[更新] 发现 $UPDATE_COUNT 个可更新的语言包:${NC}"
echo "$UPDATE_LIST" | tee -a "$LOG_FILE"
# 发送邮件通知
local email_body="系统语言包更新通知\n\n主机: $(hostname)\n时间: $(date)\n发现 $UPDATE_COUNT 个可更新的语言包:\n\n$UPDATE_LIST"
send_email "[语言包更新] $(hostname) - $UPDATE_COUNT 个更新可用" "$email_body"
else
log_message "${GREEN}[信息] 没有发现可更新的语言包${NC}"
if [ "$NOTIFY_ONLY_UPDATE" = false ] && [ "$EMAIL_NOTIFY" = true ]; then
send_email "[语言包检查] $(hostname) - 无更新" "主机: $(hostname)\n时间: $(date)\n没有发现可更新的语言包"
fi
fi
fi
log_message "${GREEN}[信息] 语言包检查完成${NC}"
使用说明
保存脚本保存为 check_lang_updates.sh:
sudo nano /usr/local/bin/check_lang_updates.sh
赋予执行权限
sudo chmod +x /usr/local/bin/check_lang_updates.sh
配置邮件发送(可选)
如果需要邮件通知,安装邮件工具并配置:
# Ubuntu/Debian sudo apt install mailutils # CentOS/RHEL sudo yum install mailx
设置定时任务
使用 crontab 设置定时检查:
a. 编辑 crontab
sudo crontab -e
b. 添加定时任务(示例:每天凌晨 2 点检查)
# 每天凌晨 2 点检查语言包更新 0 2 * * * /usr/local/bin/check_lang_updates.sh # 或每 6 小时检查一次 0 */6 * * * /usr/local/bin/check_lang_updates.sh # 或每周一凌晨 3 点检查 0 3 * * 1 /usr/local/bin/check_lang_updates.sh
立即测试运行
sudo /usr/local/bin/check_lang_updates.sh
脚本功能特点
- 多系统支持:自动检测 Ubuntu/Debian 和 CentOS/RHEL
- 日志记录:详细记录检查过程和时间戳
- 邮件通知:可配置邮件发送更新通知
- 彩色输出:终端显示彩色日志,便于阅读
- 灵活配置:可通过修改脚本顶部的配置参数定制行为
配置参数说明
| 参数 | 说明 | 默认值 |
|---|---|---|
LOG_FILE |
日志文件路径 | /var/log/language_package_check.log |
EMAIL_NOTIFY |
是否发送邮件通知 | false |
EMAIL_TO |
通知邮箱地址 | admin@example.com |
NOTIFY_ONLY_UPDATE |
仅在有更新时通知 | true |
安全注意事项
- 确保日志文件目录有写权限
- 邮件配置需确保服务器能发送邮件
- 定时任务建议使用 root 用户运行
- 定期检查日志文件大小,避免占用过多磁盘空间
此脚本可帮助系统管理员自动监控语言包更新情况,确保系统语言环境始终处于最新状态。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播