package com.dotnar.wheatfield.util;
import com.dotnar.shiro.bean.ServerInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.net.InetAddress;
import java.util.Properties;
import java.util.concurrent.atomic.AtomicInteger;
/**
* 系统信息
*
* @author longshengtang
* @since 2017-04-23 13:16
**/
public class SysInfoUtil {
private static final Logger logger = LoggerFactory.getLogger(SysInfoUtil.class);
private SysInfoUtil() {
}
private static ServerInfo serverInfo;
public static ServerInfo getSysConfig() {
if (serverInfo == null) {
synchronized (SysInfoUtil.class) {
if (serverInfo == null) {
serverInfo = initServerInfo();
}
}
}
return serverInfo;
}
public static String getSysIp() {
return getSysIp("");
}
public static String getSysIp(String defaultIp) {
ServerInfo sysConfig = getSysConfig();
if (sysConfig == null) {
return defaultIp;
}
return sysConfig.getServerIp();
}
private static AtomicInteger initCount = new AtomicInteger(0);
//得到计算机的ip,名称,操作系统名称,操作系统版本
public static ServerInfo initServerInfo() {
try {
logger.info("开始获取服务器信息");
//如果大于5次,证明获取时候出错,最多只能5次
if (initCount.getAndAdd(1) > 5) {
return new ServerInfo();
}
InetAddress addr = InetAddress.getLocalHost();
String ip = addr.getHostAddress().toString(); //获取本机ip
String hostName = addr.getHostName().toString(); //获取本机计算机名称
System.out.println("本机IP:" + ip + "\n本机名称:" + hostName);
Properties props = System.getProperties();
System.out.println("操作系统的名称:" + props.getProperty("os.name"));
System.out.println("操作系统的版本:" + props.getProperty("os.version"));
ServerInfo serverInfo = new ServerInfo();
serverInfo.setServerIp(ip);
serverInfo.setServerName(hostName);
serverInfo.setServerSystem(props.getProperty("os.name"));
logger.info("获取服务服务器信息完成!!! " + serverInfo);
return serverInfo;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}