Files
script/bash/init-ali.sh
2025-06-01 21:01:57 +08:00

91 lines
3.1 KiB
Bash

#!/bin/bash
set -euo pipefail
echo "=== 通用 Linux 初始化脚本(阿里云版) ==="
# 获取系统信息
DISTRO_ID=$(grep ^ID= /etc/os-release | cut -d= -f2 | tr -d '"')
DISTRO_NAME=$(grep ^PRETTY_NAME= /etc/os-release | cut -d= -f2 | tr -d '"')
CODENAME=$(lsb_release -cs 2>/dev/null || echo "")
echo "检测到系统: $DISTRO_NAME"
# 设置 DNS
set_dns() {
echo "配置 DNS 到 114.114.114.114 和 223.5.5.5..."
echo -e "nameserver 114.114.114.114\nnameserver 223.5.5.5" > /etc/resolv.conf || true
}
# 设置时区和同步时间
set_timezone() {
echo "设置时区为 Asia/Shanghai..."
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime || true
if command -v timedatectl >/dev/null 2>&1; then
timedatectl set-timezone Asia/Shanghai || true
timedatectl set-ntp true || true
else
echo "timedatectl 不可用,尝试使用 ntpdate..."
(apt install -y ntpdate || yum install -y ntpdate || dnf install -y ntpdate) >/dev/null 2>&1 || true
ntpdate ntp.aliyun.com || true
fi
}
# 设置软件源
set_mirrors() {
echo "更换软件源为阿里云镜像..."
case "$DISTRO_ID" in
ubuntu)
cat > /etc/apt/sources.list <<EOF
deb http://mirrors.aliyun.com/ubuntu/ ${CODENAME} main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ ${CODENAME}-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ ${CODENAME}-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ ${CODENAME}-security main restricted universe multiverse
EOF
apt update -y || true
;;
debian|raspbian)
cat > /etc/apt/sources.list <<EOF
deb http://mirrors.aliyun.com/${DISTRO_ID}/ ${CODENAME} main contrib non-free non-free-firmware
deb http://mirrors.aliyun.com/${DISTRO_ID}/ ${CODENAME}-updates main contrib non-free non-free-firmware
deb http://mirrors.aliyun.com/${DISTRO_ID}/ ${CODENAME}-backports main contrib non-free non-free-firmware
deb http://mirrors.aliyun.com/${DISTRO_ID}-security ${CODENAME}-security main contrib non-free non-free-firmware
EOF
apt update -y || true
;;
centos|rhel|almalinux|rocky)
echo "配置 RHEL 系列阿里云镜像..."
if [ -f /etc/yum.repos.d/CentOS-Base.repo ]; then
sed -i.bak -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://mirror.centos.org|baseurl=http://mirrors.aliyun.com|g' \
/etc/yum.repos.d/CentOS-Base.repo
fi
yum makecache || true
;;
fedora)
echo "配置 Fedora 阿里云镜像..."
sed -i.bak -e 's|^metalink=|#metalink=|g' \
-e 's|^#baseurl=https://download.example/pub|baseurl=http://mirrors.aliyun.com/fedora|g' \
/etc/yum.repos.d/fedora*.repo
dnf makecache || true
;;
*)
echo "不支持的系统类型:$DISTRO_ID,跳过换源"
;;
esac
}
# 主执行函数
main() {
set_mirrors
set_dns
set_timezone
echo "✅ 初始化完成。"
}
main