96 lines
2.7 KiB
Bash
Executable File
96 lines
2.7 KiB
Bash
Executable File
#!/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" |