MacOS Ventura 13.4下如何自动化定时切换Network Link Conditioner的启停状态
MacOS Ventura 13.4下如何自动化定时切换Network Link Conditioner的启停状态
嗨,我看到你现在遇到的问题啦——你写的脚本里把Bash和JavaScript的语法混在一起了,这肯定会报语法错误的,因为Bash完全不支持async/await、function这些JS语法哦😯。别担心,我来给你整理一个适合Ventura系统的纯Bash脚本方案,帮你实现重复启停Network Link Conditioner的需求。
首先,先确认你已经安装了Network Link Conditioner:它属于Xcode开发者工具的一部分,你可以先运行xcode-select --install安装Command Line Tools,然后在「系统设置」→「网络」里找到它(如果没显示,可能需要在「系统设置」→「隐私与安全性」里启用开发者模式)。
接下来是核心脚本,这个脚本可以实现重复开启指定配置、保持指定时长、然后关闭、再等待指定时长的循环逻辑:
#!/bin/bash # 配置参数,你可以根据需求修改 ON_DURATION=60 # 开启状态保持的秒数(比如60秒=1分钟) OFF_DURATION=30 # 关闭状态等待的秒数 PROFILE_NAME="100% Loss" # 要使用的NLC配置文件名 # 检查是否有sudo权限,因为修改NLC设置需要管理员权限 if [ "$(id -u)" -ne 0 ]; then echo "请使用sudo运行此脚本,比如:sudo $0" exit 1 fi # 循环执行启停逻辑 while true; do echo "[$(date)] 正在开启Network Link Conditioner,使用配置:$PROFILE_NAME" # 设置并启用指定配置 defaults write /Library/Preferences/com.apple.networkConditioner.plist ActiveProfile -string "$PROFILE_NAME" defaults write /Library/Preferences/com.apple.networkConditioner.plist NetworkConditionerEnabled -bool true # 重启networkd让设置生效 killall -HUP networkd # 保持开启状态 sleep $ON_DURATION echo "[$(date)] 正在关闭Network Link Conditioner" # 关闭NLC defaults write /Library/Preferences/com.apple.networkConditioner.plist NetworkConditionerEnabled -bool false killall -HUP networkd # 等待关闭状态的时长 sleep $OFF_DURATION done
使用步骤:
- 把上面的代码保存成
nlc_toggle.sh文件 - 给脚本添加执行权限:
chmod +x nlc_toggle.sh - 用sudo运行:
sudo ./nlc_toggle.sh
如果你需要停止脚本,只需要在终端按Ctrl+C就可以啦。
另外,如果你想确认自己的NLC配置名称是否正确,可以先运行这个命令查看所有可用配置:
defaults read /Library/Preferences/com.apple.networkConditioner.plist Profiles | grep -A 10 '"Name"'
这样就能准确找到你要使用的配置文件名啦。
备注:内容来源于stack exchange,提问作者user893468
相关产品推荐
相关产品推荐

