# yl-itfc-manager **Repository Path**: yaolonga/yl-itfc-manager ## Basic Information - **Project Name**: yl-itfc-manager - **Description**: 管理网络接口、串口的工具库。基于shell脚本的方式直接调用操作系统网络、硬件资源接口。解决java无法直接配置网络信息(网关地址获取、ip配置、wifi配置)等痛点。 让服务端应用也能直接操作操作系统的网络接口。目前支持win(10-11),后续将支持linux、mac等平台。 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-10-26 - **Last Updated**: 2025-08-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # yl-interface-manager #### 介绍 管理网络接口、串口的工具库。基于shell脚本的方式直接调用操作系统网络、硬件资源接口。解决java无法直接配置网络信息(网关地址获取、ip配置、wifi配置)等痛点。 让服务端应用也能直接操作操作系统的网络接口。目前支持win(10-11),后续将支持linux、mac等平台。 #### 安装教程 - maven 引入依赖 ```xml com.yaolonga yl-itfc-manager-spring-boot-starter 1.1.0-RELEASE ``` #### 使用说明 - 使用(直接注入即可,无需配置,根据当前运行平台自动适配(当前仅支持win平台)) ```java @Autowired private NetworkInterfaceManager networkInterfaceManager; ``` #### 功能介绍 - 获取网卡信息(包括当前接入该网卡的网关信息) - 配置ip地址(包括动态dhcp配置、静态ip配置) - 配置系统dns(动态dhcp dns,静态dns,获取网卡dns) - 路由配置(获取、设置本机路由表、临时路由、和静态路由) - wifi配置(获取当前系统wifi连接信息、连接wifi、断开wifi、扫描wifi、忘记wifi、设置wifi配置、删除wifi配置】) ```java public interface NetworkInterfaceManager { default Boolean isSupportVersion(String version){ return getSystemType().isSupportVersion(version); } /** * 获取平台类型 */ PlatformType getPlatformType(); /** * @return 获取系统类型 */ SystemType getSystemType(); /** * @return 获取网卡信息 */ List getNetworkInterfaceInfos(); /** * 配置dhcp ip地址 * * @param interfaceName 网卡名称 * @return 结果 */ String configDhcpIpAddress(String interfaceName); /** * 配置dhcp dns地址 (自动) * * @param interfaceName 网卡名称 * @return 结果 */ String configDhcpDnsAddress(String interfaceName); /** * 配置静态ip地址 * * @param interfaceName 网卡名称 * @return 结果 */ String configStaticIpAddress(String interfaceName, String ip, String mask, String gateway); /** * 配置静态dns地址 (首选静态) * * @param interfaceName 网卡名称 * @param dnsAddress dns地址 * @return 结果 */ String configStaticDnsAddress(String interfaceName, String dnsAddress); /** * 添加一个dns地址 (追加一个dns) * * @param interfaceName 网卡名称 * @param dnsAddress dns地址 * @param index 添加索引 * @return 结果 */ String addDnsAddress(String interfaceName, String dnsAddress, int index); /** * 添加一个dns地址 (追加一个dns) * * @param interfaceName 网卡名称 * @param dnsAddress dns地址 * @return 结果 */ String addDnsAddress(String interfaceName, String dnsAddress); /** * 添加多个dns地址 (添加顺序根据列表顺序) * * @param interfaceName 网卡名称 * @param dnsAddress dns地址 * @return 结果 */ default Map addDnsAddress(String interfaceName, List dnsAddress) { if (dnsAddress == null || dnsAddress.isEmpty()) { return null; } Map map = new HashMap<>(); for (String address : dnsAddress) { String s = addDnsAddress(interfaceName, address); map.put(address, s); } return map; } /** * 删除dns地址 * * @param interfaceName 网卡名称 * @param dnsAddress dnsAddress * @return 结果 */ String delDnsAddress(String interfaceName, String dnsAddress); /** * 添加路由 * * @param route 路由配置 * @return 结果 */ String addRoute(NetRoute route); /** * 添加临时路由 * * @param route 路由配置 * @return 结果 */ default String addTempRoute(NetRoute route) { route.setType(NetRouteType.TEMPORARY_ROUTE); return addRoute(route); } /** * 添加永久路由 * * @param route 路由配置 */ default String addPermanentRoute(NetRoute route) { route.setType(NetRouteType.PERMANENT_ROUTE); return addRoute(route); } /** * 添加多个路由 * * @param routes 路由配置列表 */ default Map addRoutes(List routes) { if (routes == null || routes.isEmpty()) { return null; } Map map = new HashMap<>(); for (NetRoute route : routes) { String res = addRoute(route); map.put(route.getTarget(), res); } return map; } /** * 修改路由 * * @param route 路由配置 * @return 结果 */ String changeRoute(NetRoute route); /** * 删除路由 * * @param route 路由配置 * @return 结果 */ String delRoute(NetRoute route); /** * 扫描wifi信息 * * @param interfaceName 网卡名称 * @return wifi信息 */ WifiScanInfo scanWifiInfo(String interfaceName); /** * 获取wifi连接信息 * * @param interfaceName 网卡名称 * @return wifi连接信息 */ default WifiLinkInfo getWifiLinkInfo(String interfaceName) { return getWifiLinkInfos().stream().filter(wifiLinkInfo -> wifiLinkInfo.getInterfaceName().equals(interfaceName)).findFirst().orElse(null); } /** * 获取wifi连接信息列表 * * @return wifi连接信息列表 */ List getWifiLinkInfos(); /** * 连接wifi * * @param interfaceName 网卡名称 * @param ssid ssid * @param password 密码 * @param autoConnection 是否自动连接 * @return 结果 */ String connectWifi(String interfaceName, String ssid, String password, boolean autoConnection); /** * 连接wifi * * @param wifiLinkConf wifi连接配置 * @return 结果 */ default String connectWifi(WifiLinkConf wifiLinkConf) { return connectWifi(wifiLinkConf.getInterfaceName(), wifiLinkConf.getSsid(), wifiLinkConf.getPassword(), wifiLinkConf.isAutoConnection()); } /** * 断开wifi * * @param interfaceName 网卡名称 * @return 结果 */ String disconnectWifi(String interfaceName); /** * 忘记wifi * * @param interfaceName 网卡名称 * @param ssid ssid * @return 结果 */ String forgetWifi(String interfaceName, String ssid); /** * 设置wifi配置 * * @param wifiLinkConf wifi配置信息 * @return 结果 */ String setWifiConf(WifiLinkConf wifiLinkConf); /** * 删除wifi配置 * * @param interfaceName 网卡名称 * @param ssid ssid * @return 结果 */ String delWifiConf(String interfaceName, String ssid); /** * 启用wifi (win 需要 admin权限) * * @param interfaceName 网卡名称 * @return 结果 */ String enableWifi(String interfaceName); /** * 禁用wifi (win 需要 admin权限) * * @param interfaceName 网卡名称 * @return 结果 */ String disableWifi(String interfaceName); } ``` #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request