scutil 本身不提供“导出配置清单”的一键命令,它仅是交互式网络配置调试工具;完整网络配置快照需组合 networksetup 列服务、networksetup 查 DNS/代理、ls/cat 检查 /etc/resolver/ 规则、plutil 解析 SystemConfiguration plist 文件等多步命令协同完成。
scutil 本身不提供“导出配置清单”的一键命令,它是一个交互式网络配置查询与修改工具,主要用于实时查看、调试和动态注入网络服务参数。若想获取 macos 系统当前网络配置的全量快照,需组合多个终端命令协同完成,重点覆盖服务结构、dns、代理、接口状态、resolver 规则及底层偏好设置。
一、获取网络服务拓扑与优先级顺序
这是理解“哪个服务实际生效”的基础,scutil 的 net show 命令可辅助验证,但完整结构需依赖 networksetup:
- 运行 networksetup -listnetworkserviceorder:输出真实的服务启用顺序(含硬件端口与设备名),例如
(Hardware Port: Wi-Fi, Device: en0); - 运行 networksetup -listallnetworkservices:列出所有已定义服务名(含带 * 的当前活跃服务);
- 进入 scutil 交互模式:sudo scutil → 输入 net → 输入 show,可查看各服务绑定的 Service ID 和部分运行时状态(如是否 active、IPv4 配置方式)。
二、提取 DNS、代理与搜索域等服务级配置
这些是 networksetup 管理的核心参数,scutil 不直接暴露它们,但可通过以下命令批量读取:
- 对每个服务名(如
Wi-Fi),执行:
networksetup -getdnsservers "Wi-Fi"
networksetup -getsearchdomains "Wi-Fi"
networksetup -getwebproxy "Wi-Fi"
networksetup -getftpproxy "Wi-Fi"; - 汇总所有服务:可用循环脚本快速遍历,例如:
for svc in $(networksetup -listallnetworkservices | grep -v "^$"); do echo "== $svc =="; networksetup -getdnsservers "$svc" 2>/dev/null; done
三、检查自定义域名解析规则(/etc/resolver/)
这是 scutil 协同生效的关键分流机制,虽不由 scutil 创建,但其存在直接影响 scutil 的 DNS 路由行为:
- 列出全部 resolver 文件:ls -l /etc/resolver/;
- 逐个查看内容:cat /etc/resolver/* 2>/dev/null;
- 确认权限是否合规(应为
-rw-r--r-- 1 root wheel),否则 scutil 不会加载该规则。
四、读取底层网络偏好数据库(SystemConfiguration)
这部分是系统真正的“配置源”,scutil 实际操作的对象就是这些 plist 文件的内容映射:
- 核心文件路径:
/Library/Preferences/SystemConfiguration/preferences.plist
/Library/Preferences/SystemConfiguration/NetworkInterfaces.plist; - 安全查看(不修改):
sudo plutil -p /Library/Preferences/SystemConfiguration/preferences.plist | head -50
(用plutil -p可读取二进制 plist 为 JSON-like 结构); - 如需完整导出为文本,建议先复制备份再转换:
sudo cp /Library/Preferences/SystemConfiguration/preferences.plist ~/Desktop/prefs.plist.bak
plutil -convert xml1 ~/Desktop/prefs.plist.bak -o ~/Desktop/prefs.xml。


















