修改本地host绑定

这个需求其实挺常见的,简单写个脚本吧

写个脚本

使用说明:

  1. 将下面的脚本复制并粘贴到一个文本文件中,并保存为 manage_host_entry.sh。
  2. 修改脚本中的 IP_ADDRESS 和 DOMAIN_NAME 变量,将它们替换为您要操作的IP地址和域名。
  3. 在终端中导航到脚本所在的目录。
  4. 使用命令 chmod +x manage_host_entry.sh 使脚本可执行。
  5. 要添加绑定,运行脚本 sudo ./manage_host_entry.sh add。
  6. 要删除绑定,运行脚本 sudo ./manage_host_entry.sh remove。
  7. 输入您的管理员密码以允许脚本修改hosts文件。 请在进行任何修改之前备份您的hosts文件。如果出现问题,您可以使用备份文件进行恢复。
#!/bin/bash

# 定义要操作的IP地址和域名
IP_ADDRESS="192.168.1.1"
DOMAIN_NAME="w3cdoc.com"

# 检查是否提供了正确的参数
if [ "$#" -ne 1 ]; then
    echo "使用方法: $0 add|remove"
    exit 1
fi

ACTION=$1

# 检查是否以root权限运行脚本
if [ "$(id -u)" != "0" ]; then
   echo "此脚本需要以root权限运行。请使用sudo运行此脚本。" 1>&2
   exit 1
fi

# 备份当前的hosts文件
cp /etc/hosts /etc/hosts.backup

# 根据传入的参数执行对应的操作
case $ACTION in
    add)
        # 检查是否已存在相同的绑定
        EXISTING_ENTRY=$(grep -F "$IP_ADDRESS $DOMAIN_NAME" /etc/hosts)

        # 如果已存在,不再添加
        if [ -n "$EXISTING_ENTRY" ]; then
            echo "已存在相同的IP和域名绑定,无需再次添加。"
            exit 0
        fi

        # 添加新的绑定到hosts文件
        echo "$IP_ADDRESS $DOMAIN_NAME" | tee -a /etc/hosts > /dev/null

        # 提示用户操作完成
        echo "已成功添加绑定:$IP_ADDRESS 绑定到 $DOMAIN_NAME"
        ;;
    remove)
        # 删除对应的IP和域名绑定
        sed -i.bak "/$IP_ADDRESS $DOMAIN_NAME/d" /etc/hosts

        # 提示用户操作完成
        echo "已成功删除绑定:$IP_ADDRESS 绑定到 $DOMAIN_NAME"
        ;;
    *)
        echo "无效的操作:$ACTION。请使用 add 或 remove。"
        exit 1
        ;;
esac


请遵守《互联网环境法规》文明发言,欢迎讨论问题
扫码反馈

扫一扫,反馈当前页面

咨询反馈
扫码关注
返回顶部