Mac OSX SwiftUI应用执行终端ipconfig命令失败求助
解决方法
1. 关闭App Sandbox(仅测试用,不适合上架)
如果只是本地测试,可以直接关闭App Sandbox绕过限制:
- 打开Xcode项目的
Signing & Capabilities标签页 - 找到
App Sandbox选项,取消勾选
注意:该方式不符合App Store上架要求,仅用于临时测试场景。
2. 使用系统Network框架替代终端命令(推荐)
直接调用ipconfig会触发沙箱权限限制,更合规的方式是用Apple官方提供的Network框架获取IP地址,无需执行终端命令:
import Network func getIPAddress(for interfaceName: String = "en0") -> String? { guard let targetInterface = NWInterface.Interface.allInterfaces.first(where: { $0.name == interfaceName }) else { return nil } guard let ipAddresses = targetInterface.ipAddresses else { return nil } // 筛选出IPv4地址 return ipAddresses.first(where: { $0.contains(".") }) }
调用该函数即可获取指定网络接口的IPv4地址,完全符合沙箱规则,不会触发权限报错。
3. 调整沙箱权限(若必须使用终端命令)
如果一定要通过终端命令执行,需配置沙箱权限:
- 在
Signing & Capabilities的App Sandbox中,开启Network分类下的Incoming Connections (Server)和Outgoing Connections (Client) - 在项目的
Entitlements文件中,添加com.apple.security.network.client和com.apple.security.network.server权限
但即使配置了以上权限,ipconfig仍可能因沙箱的严格限制无法正常执行,因此优先推荐使用系统API方案。
内容的提问来源于stack exchange,提问作者noloman
相关产品推荐
相关产品推荐

