介绍
管理网络接口、串口的工具库。基于shell脚本的方式直接调用操作系统网络、硬件资源接口。解决java无法直接配置网络信息(网关地址获取、ip配置、wifi配置)等痛点。
让服务端应用也能直接操作操作系统的网络接口。目前支持win(10-11),后续将支持linux、mac等平台。
安装教程
- maven 引入依赖
<dependency>
<groupId>com.yaolonga</groupId>
<artifactId>yl-itfc-manager-spring-boot-starter</artifactId>
<version>1.0.1-RELEASE</version>
</dependency>
使用说明
- 使用(直接注入即可,无需配置,根据当前运行平台自动适配(当前仅支持win平台))
@Autowired
private NetworkInterfaceManager networkInterfaceManager;
功能介绍
- 获取网卡信息(包括当前接入该网卡的网关信息)
- 配置ip地址(包括动态dhcp配置、静态ip配置)
- 配置系统dns(动态dhcp dns,静态dns,获取网卡dns)
- 路由配置(获取、设置本机路由表、临时路由、和静态路由)
- wifi配置(获取当前系统wifi连接信息、连接wifi、断开wifi、扫描wifi、忘记wifi、设置wifi配置、删除wifi配置】)
public interface NetworkInterfaceManager {
default Boolean isSupportVersion(String version){
return getSystemType().isSupportVersion(version);
}
/**
* 获取平台类型
*/
PlatformType getPlatformType();
/**
* @return 获取系统类型
*/
SystemType getSystemType();
/**
* @return 获取网卡信息
*/
List<NetworkInterfaceInfo> 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<String, String> addDnsAddress(String interfaceName, List<String> dnsAddress) {
if (dnsAddress == null || dnsAddress.isEmpty()) {
return null;
}
Map<String, String> 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<String, String> addRoutes(List<NetRoute> routes) {
if (routes == null || routes.isEmpty()) {
return null;
}
Map<String, String> 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<WifiLinkInfo> 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);
}