剑未佩妥,出门已是江湖。
The Sword Unsheathed, Venture Begins: Into the Realm of Rivers and Lakes.

Mac下班定时断网

 Last edited8/6/2024
type
Post
status
Published
slug
101
summary
在Mac系统中编写一个“计划任务”(Scheduled Jobs)脚本来每天下午12点断开WiFi连接,并使用launchd来调度此脚本
tags
category
password
要在Mac系统中编写一个“计划任务”(Scheduled Jobs)脚本来每天下午12点断开WiFi连接,并使用launchd来调度此脚本,可以按照以下步骤操作:

第一步:编写脚本

  1. 打开终端
  1. 创建一个新的Shell脚本文件,例如命名为disconnect_wifi.sh
    1. nano disconnect_wifi.sh
  1. 编辑脚本文件,添加以下内容:
    1. #!/bin/bash #断开WiFi连接 networksetup -setairportpower en0 off && echo $(date +%F%n%T) >> /tmp/disconnect_wifi_success.txt
      这个脚本使用networksetup命令来断开名为en0的Wi-Fi接口。请注意,接口名称可能会根据您的系统配置有所不同,通常en0适用于大多数Mac。
  1. 保存并退出编辑器
      • 按 Ctrl+X,然后按 Y 保存更改,最后按 Enter 确认文件名。
  1. 使脚本可执行
    1. #bash深色版本 chmod +x disconnect_wifi.sh

第二步:创建launchd配置文件

  1. 创建一个新的.plist文件,例如命名为com.example.disconnect_wifi.plist
    1. nano ~/Library/LaunchAgents/com.example.disconnect_wifi.plist
  1. 编辑.plist文件,添加以下内容:
    1. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.example.disconnect_wifi</string> <key>ProgramArguments</key> <array> <string> /Users/haolin/developer/scripts/disconnect_wifi.sh </string> </array> <key>StartCalendarInterval</key> <array> <dict> <key>Hour</key> <integer>24</integer> <key>Minute</key> <integer>0</integer> </dict> </array> </dict> </plist>
      这个配置文件设置了每天中午12点执行脚本。
  1. 保存并退出编辑器
      • 按 Ctrl+X,然后按 Y 保存更改,最后按 Enter 确认文件名。
  1. 替换脚本路径
      • 在上面的.plist文件中,将disconnect_wifi.sh替换为您实际的脚本路径。
  1. 加载launchd配置文件
    1. #启动 launchctl load ~/Library/LaunchAgents/com.example.disconnect_wifi.plist launchctl start ~/Library/LaunchAgents/com.example.disconnect_wifi.plist #关闭 launchctl stop ~/Library/LaunchAgents/com.example.disconnect_wifi.plist launchctl unload ~/Library/LaunchAgents/com.example.disconnect_wifi.plist

第三步:验证任务

  1. 查看任务状态
    1. launchctl list | grep com.example.disconnect_wifi
      如果一切设置正确,您应该能看到类似这样的输出:
      1 com.example.disconnect_wifi

注意事项

  • 如果您需要在特定时间点重新连接WiFi,可以创建另一个脚本和launchd配置文件来执行这个任务。
  • 如果您需要在某个特定的WiFi网络上运行此脚本,请确保您的电脑连接到了正确的网络。
  • 如果您不再需要这个任务,可以使用launchctl unload命令来卸载配置文件。
 
这样,您就设置了一个每天下午12点自动断开WiFi连接的任务。