macOS根据Wi-Fi的自动化

本文最后更新于 2024年8月1日 下午

macOS根据Wi-Fi的自动化

作用

无法修改路由器时通过自动修改自己电脑的hosts文件实现域名访问局域网的不同地址。

比如我在本地搭建了jellyfin服务器然后穿透到公网,这样就可以实现在局域网时访问域名走内网,其他时候走公网

步骤

  1. 在设置中添加网络位置

    image-20240801145259388
  2. 安装locationchanger

    1. ```shell curl -L https://github.com/tippye/locationchanger/raw/master/locationchanger.sh | bash

      1
      2
      3
      4
      5
      6

      2. `locationchanger`将会放到[/usr/local/bin](file:///usr/local/bin)目录中

      3. ```shell
      mkdir ~/.locations
      sudo nano ~/.locations/locations.conf

    2. 内容填写格式为

      1
      2
      wifi1=位置1
      wifi2=位置2

      例:

      1
      2
      3
      H3C_ALi=办公室
      H3C_ALi_5G=办公室
      Xiaomi_B811=宿舍
    3. 日志文件存放在~/Library/Logs/LocationChanger.log

      1
      tail -f ~/Library/Logs/LocationChanger.log

      或者在控制台应用中也可以找到

      image-20240801150419691
    4. 到这里切换Wi-Fi就可以自动切换网络位置,如果需要执行脚本可以继续往下

    5. 比如切换到实验室场景时我希望修改hosts文件,那么就可以在~/.locations中创建一个文件实验室(文件没有后缀,文本编辑创建的文件记得删掉后缀)

      1
      sudo nano ~/.locations/实验室
    6. 在里面写入

      1
      2
      3
      4
      #!/usr/bin/env bash
      exec 2>&1
      # 这下面是要自信的操作
      cp ~/auto_hosts/hosts_sys /etc/hosts
    7. 切换到未配置的Wi-Fi会切换到Automatic场景,所以同样写一个Automatic文件即可实现离开网络时执行的操作

      1. 有个小问题是切换到其他非Automatic场景就不会执行离开网络的操作,有需要的可以每个场景文件都写一遍离开场景操作或者修改提供的脚本
    8. 这几个文件保存后会立即生效,不需要重启

修改hosts

我这里写了两个hosts文件放在~/auto_hosts,只需要执行cp hosts1 /etc/hosts就可以实现修改hosts

记得保存原本的hosts备份

直接使用cp修改hosts会因为权限问题无法执行,我给了/etc/hosts777权限,目前没有其他好方法

图片来自文心一格


macOS根据Wi-Fi的自动化
https://tippye.github.io/2024/08/01/macOS根据Wi-Fi的自动化/
作者
Tippy
发布于
2024年8月1日
许可协议