Files
Linux/h-hosts.sh
2025-06-18 12:57:29 +08:00

96 lines
2.7 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# h-hosts.sh - 配置hosts文件脚本
# 用于添加指定域名解析记录到 /etc/hosts 文件
# GitHub Actions 配置模板
GITHUB_ACTIONS_CONFIG='
steps:
- name: 配置 hosts
run: |
URL="https://Git.1-H.CC/Scripts/Linux/raw/branch/main/h-hosts.sh"; curl -fsSL "$URL" | bash
'
# 检查是否有root权限
if [ "$EUID" -ne 0 ]; then
echo "错误: 此脚本需要root权限运行"
echo "请使用: sudo $0"
exit 1
fi
# 设置颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 定义IP地址和域名列表
IP_ADDRESS="158.180.89.16"
DOMAINS=(
"git.yanhao.ren"
"harbor.oo1.dev"
"alist.oo1.dev"
)
# 统计变量
ADDED_COUNT=0
UPDATED_COUNT=0
UNCHANGED_COUNT=0
echo -e "${GREEN}开始配置hosts文件...${NC}"
echo "目标IP地址: $IP_ADDRESS"
echo
# 备份原hosts文件
BACKUP_FILE="/etc/hosts.backup.$(date +%Y%m%d_%H%M%S)"
cp /etc/hosts "$BACKUP_FILE"
echo -e "${YELLOW}已创建备份文件: $BACKUP_FILE${NC}"
# 添加域名解析记录
for domain in "${DOMAINS[@]}"; do
# 检查域名是否已存在
if grep -q "$domain" /etc/hosts; then
# 获取当前域名对应的IP地址
current_ip=$(grep "$domain" /etc/hosts | grep -v '^#' | awk '{print $1}' | head -1)
if [ "$current_ip" = "$IP_ADDRESS" ]; then
echo -e "${GREEN}域名 $domain 已正确配置 (IP: $current_ip)${NC}"
((UNCHANGED_COUNT++))
else
echo -e "${YELLOW}域名 $domain 已存在但IP不同 (当前: $current_ip, 目标: $IP_ADDRESS)${NC}"
echo -e "${YELLOW}正在更新IP地址...${NC}"
# 删除旧记录并添加新记录
sed -i.tmp "/[[:space:]]$domain[[:space:]]*$/d" /etc/hosts
echo "$IP_ADDRESS $domain" | tee -a /etc/hosts
echo -e "${GREEN}已更新: $domain 的IP地址从 $current_ip 更新为 $IP_ADDRESS${NC}"
((UPDATED_COUNT++))
fi
else
echo "$IP_ADDRESS $domain" | tee -a /etc/hosts
echo -e "${GREEN}已添加: $IP_ADDRESS $domain${NC}"
((ADDED_COUNT++))
fi
done
echo
echo -e "${GREEN}hosts文件配置完成${NC}"
# 显示操作统计
echo
echo -e "${YELLOW}操作统计:${NC}"
echo -e " 新增域名: ${GREEN}$ADDED_COUNT${NC}"
echo -e " 更新域名: ${YELLOW}$UPDATED_COUNT${NC}"
echo -e " 未变更域名: ${GREEN}$UNCHANGED_COUNT${NC}"
# 显示添加的记录
echo
echo -e "${YELLOW}当前配置的解析记录:${NC}"
for domain in "${DOMAINS[@]}"; do
grep "$domain" /etc/hosts | grep "$IP_ADDRESS"
done
echo
echo -e "${YELLOW}如需恢复原配置,请运行:${NC}"
echo "sudo cp $BACKUP_FILE /etc/hosts"