null, 'mask' => null, 'gateway' => null, 'dns' => [], ]; } // 匹配 IPv4 地址 if ($interface && preg_match('/IP4.ADDRESS\[1\]: *([\d\.]+)\/(\d+)/', $line, $matches)) { $ip = $matches[1]; $prefix = $matches[2]; // $mask = self::prefixToMask($prefix); // 获取子网掩码 $interfaces[$interface]['ip'] = $ip; $interfaces[$interface]['mask'] = $prefix; // 设置掩码格式 } // 匹配网关 if ($interface && preg_match('/IP4.GATEWAY: *([\d\.]+)/', $line, $matches)) { $interfaces[$interface]['gateway'] = $matches[1]; } // 匹配 DNS if ($interface && preg_match('/IP4.DNS\[\d+\]: *([\d\.]+)/', $line, $matches)) { $interfaces[$interface]['dns'][] = $matches[1]; } } // 输出调试信息,检查解析到的接口 error_log(print_r($interfaces, true)); return $interfaces; } public static function getDHCPstatus($state) { // 调试:检查传递的 state 参数 error_log("正在获取DHCP状态的接口: " . $state); // 执行 nmcli 命令,获取指定连接的详细信息 $output = shell_exec('nmcli con show ' . escapeshellarg($state)); // 使用正则表达式匹配 'ipv4.method: auto' if (preg_match('/ipv4\.method:\s+auto/', $output)) { return true; // 如果匹配到,说明启用了 DHCP } else { return false; // 否则未启用 DHCP } } }