diff --git a/h-hosts.sh b/h-hosts.sh new file mode 100755 index 0000000..1ed34f5 --- /dev/null +++ b/h-hosts.sh @@ -0,0 +1,87 @@ +#!/bin/bash + +# h-hosts.sh - 配置hosts文件脚本 +# 用于添加指定域名解析记录到 /etc/hosts 文件 + +# 检查是否有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" \ No newline at end of file