介绍位置变更器

介绍位置变更器

是否可以将 Mac OS X 设置为在连接到具有特定名称的 Wifi 网络时自动为其 Airport 接口配置静态 IP 地址,并在所有其他 Wifi 网络上使用 DHCP?

目前,我正在使用“系统偏好设置”中“网络”部分的“位置”功能在两个 IP 地址设置之间手动切换。我有一个“我的静态 IP”设置和一个默认的“DHCP”设置。但是,每次切换位置时,​​这都需要进入“系统偏好设置”来更改“位置”下拉菜单。这可以自动完成吗?

最好不要使用第三方软件来完成此操作。

答案1

这不是仅仅通过操作系统就能完成的事情。

上述位置是一个选项,还有免费软件机场位置或 MarcoPolo 或付费网络位置。还有一个名为 WiFiScriptor 的 AppleScript 可以提供帮助。

然而!你不需要进入系统偏好设置->网络->[位置下拉菜单]。您可以浏览苹果菜单->地点(下面约 6 个选项)->[选择您想要的位置]

-b

答案2

无需任何第三方即可完成,请参阅https://github.com/rimar/wifi-location-changer

答案3

可能对你有用的第三方非免费解决方案是位置

根据建议这个答案对于 stackoverflow 上的一个类似但不完全相同的问题,您可以创建一个定期运行的脚本。launchd将阻止它运行多次。

伪代码:

  • 从文件中获取saved_wifi值
  • 将 current_wifi 设置为输出networksetup -getairportnetwork AirPort
  • 如果saved_wifi == current_wifi,则退出
  • 否则运行,networksetup -switchtolocation {location}其中 {location} 是您想要根据找到的 wifi 网络切换到的位置的名称。

当您连接到本地 wifi 时,可能会出现先有鸡还是先有蛋的问题,因为您配置为期望从 DHCP 获取地址,但本地 wifi 却不提供 DHCP 地址。

--

更新:发现可能重复的问题这表明了一个开源解决方案:马可波罗

答案4

介绍位置变更器

这是一个非常有前途的脚本,用于根据 WiFi SSID 更改网络位置:

它由安东·埃普雷夫。你可以在GitHub上查看代码和更详细的文档:

安装

它通过命令行安装:

$ curl -L https://github.com/eprev/locationchanger/raw/master/locationchanger.sh | bash

它将要求您输入 root 密码来安装locationchanger/usr/local/bin目录。

就是这样!

之后,如果有网络位置其名称与当前 WiFi 网络的名称 (SSID) 相同,则会自动切换到网络位置。否则,它将切换到自动的位置。(顺便说一句,如果没有位置称为自动的,它会在日志中抱怨并退出。)

特定位置的脚本

如果您想在每次连接到特定 WiFi 网络时运行脚本,请输入这些脚本~/.locations并以 WiFi 网络命名,例如~/.locations/Corp Wi-Fi

#!/usr/bin/env bash

# Require password immediately after sleep or screen saver begins
osascript -e 'tell application "System Events" to set require password to wake of security preferences to true'

您可能想要创建~/.locations/Automatic可在其他位置重置这些更改的文件:

#!/usr/bin/env bash

# Don’t require password immediately after sleep or screen saver begins
osascript -e 'tell application "System Events" to set require password to wake of security preferences to false'

确保在脚本上转换执行位(chmod +x)。

位置别名

您可以在多个 WiFi 网络之间共享网络位置。例如,如果您有一个同时在 2.4 和 5GHz 频段广播的无线路由器,您可以创建一个配置文件~/.locations/locations.conf并在其中放入简单的键值对:

Home_WiFi_5GHz=Home_WiFi

这里键是 WiFi 网络名称, 和值是相应的网络位置。用等号 ( =, ) 连接它们,中间没有空格。在上面的例子中,如果 WiFi 网络主页_WiFi_5GHz连接后,它将切换到网络位置首页_WiFi

请注意,位置别名优先于同名规则。在上面的例子中,只有~/.locations/Home_WiFi当您连接到 WiFi 网络时才会运行脚本主页_WiFi_5GHz

有了位置别名,您甚至不需要创建额外的网络位置来匹配 WiFi 网络的名称。

故障排除

您可以使用以下命令查看详细日志:

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

示例输出:

[2017-10-13 11:35] Connected to 'Unknown WiFi'
[2017-10-13 11:35] Location 'Unknown WiFi' was not found. Will default to 'Automatic'
[2017-10-13 11:35] Changing the location to 'Automatic'
CurrentSet updated to 6B593A12-C51B-3FF1-DE1D-87310F232147 (Automatic)
[2017-10-13 11:37] Connected to 'Home_WiFi_5GHz'
[2017-10-13 11:37] Will switch the location to 'Home_WiFi' (configuration file)
[2017-10-13 11:37] Changing the location to 'Home_WiFi'
CurrentSet updated to 7900D1E6-3820-50C6-882E-4F5K2BEF32ED (Home_WiFi)

卸载

首先,卸载启动代理:

launchctl unload ~/Library/LaunchAgents/LocationChanger.plist

然后,删除二进制文件、plist 和日志文件:

rm ~/Library/LaunchAgents/LocationChanger.plist
rm ~/Library/Logs/LocationChanger.log
sudo rm /usr/local/bin/locationchanger

您还可以删除里面的配置文件和特定位置的脚本~/.locations

rm -rf ~/.locations

相关内容