#!/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"