package org.hepx.jgt.common.sys; import javax.servlet.http.HttpServletRequest; import java.net.InetAddress; import java.net.NetworkInterface; import java.util.Date; import java.util.Formatter; import java.util.Locale; import java.util.Properties; /** * 系统信息 * * @author: Koala * @Date: 14-8-22 下午6:12 * @Version: 1.0 */ public class SystemInfo { /** * 系统名 */ private String os_name; /** * 系统架构 */ private String os_arch; /** * 系统版本号 */ private String os_version; /** * 系统IP */ private String os_ip; /** * 系统MAC地址 */ private String os_mac; /** * 系统时间 */ private Date os_date; /** * 系统CPU个数 */ private Integer os_cpus; /** * 虚拟机内存总量 */ private Long jvm_totalMemory; /** * 虚拟机空闲内存量 */ private Long jvm_freeMemory; /** * 虚拟机使用最大内存量 */ private Long jvm_maxMemory; /** * 系统用户名 */ private String os_user_name; /** * 用户的当前工作目录 */ private String os_user_dir; /** * 用户的主目录 */ private String os_user_home; /** * Java的运行环境版本 */ private String java_version; /** * java默认的临时文件路径 */ private String java_io_tmpdir; /** * java 平台 */ private String sun_desktop; /** * 文件分隔符 在 unix 系统中是"/" */ private String file_separator; /** * 路径分隔符 在 unix 系统中是":" */ private String path_separator; /** * 行分隔符 在 unix 系统中是"/n" */ private String line_separator; /** * 服务context* */ private String server_context; /** * 服务器名 */ private String server_name; /** * 服务器端口 */ private Integer server_port; /** * 服务器地址 */ private String server_addr; /** * 获得客户端电脑的名字,若失败,则返回客户端电脑的ip地址 */ private String server_host; /** * 服务协议 */ private String server_protocol; private static SystemInfo SYSTEMINFO; public static SystemInfo getInstance() { if (SYSTEMINFO == null) { SYSTEMINFO = new SystemInfo(); } return SYSTEMINFO; } public static SystemInfo getInstance(HttpServletRequest request) { if (SYSTEMINFO == null) { SYSTEMINFO = new SystemInfo(request); } else { SYSTEMINFO.ServerInfo(request); } return SYSTEMINFO; } private SystemInfo() { super(); init(); } private SystemInfo(HttpServletRequest request) { super(); init(); /** * 额外信息 */ ServerInfo(request); } /** * 初始化基本属性 */ private void init() { Properties props = System.getProperties(); this.java_version = props.getProperty("java.version"); this.java_io_tmpdir = props.getProperty("java.io.tmpdir"); this.os_name = props.getProperty("os.name"); this.os_arch = props.getProperty("os.arch"); this.os_version = props.getProperty("os.version"); this.file_separator = props.getProperty("file.separator"); this.path_separator = props.getProperty("path.separator"); this.line_separator = props.getProperty("line.separator"); this.os_user_name = props.getProperty("user.name"); this.os_user_home = props.getProperty("user.home"); this.os_user_dir = props.getProperty("user.dir"); this.sun_desktop = props.getProperty("sun.desktop"); this.os_date = new Date(); this.os_cpus = Runtime.getRuntime().availableProcessors(); this.jvm_totalMemory = Runtime.getRuntime().totalMemory(); this.jvm_freeMemory = Runtime.getRuntime().freeMemory(); this.jvm_maxMemory = Runtime.getRuntime().maxMemory(); try { ipMac(); } catch (Exception e) { this.os_ip = ""; this.os_mac = ""; } } /** * 获取ip和mac地址 * * @throws Exception */ @SuppressWarnings("resource") private void ipMac() throws Exception { InetAddress address = InetAddress.getLocalHost(); NetworkInterface ni = NetworkInterface.getByInetAddress(address); ni.getInetAddresses().nextElement().getAddress(); byte[] mac = ni.getHardwareAddress(); String sIP = address.getHostAddress(); String sMAC = ""; Formatter formatter = new Formatter(); for (int i = 0; i < mac.length; i++) { sMAC = formatter.format(Locale.getDefault(), "%02X%s", mac[i], (i < mac.length - 1) ? "-" : "").toString(); } SystemInfo.this.os_ip = sIP; SystemInfo.this.os_mac = sMAC; } /** * 获取服务器信息 * * @param request */ public void ServerInfo(HttpServletRequest request) { this.server_name = request.getServerName(); this.server_port = request.getServerPort(); this.server_addr = request.getRemoteAddr(); this.server_host = request.getRemoteHost(); this.server_protocol = request.getProtocol(); this.server_context = request.getContextPath(); } public String getOs_name() { return os_name; } public String getOs_arch() { return os_arch; } public String gOss_version() { return os_version; } public String getOs_ip() { return os_ip; } public String getOs_mac() { return os_mac; } public Date getOs_date() { return os_date; } public Integer getOs_cpus() { return os_cpus; } public String getOs_user_name() { return os_user_name; } public String getOs_user_dir() { return os_user_dir; } public String getOs_user_home() { return os_user_home; } public String getJava_version() { return java_version; } public String getJava_io_tmpdir() { return java_io_tmpdir; } public String getSun_desktop() { return sun_desktop; } public String getFile_separator() { return file_separator; } public String getPath_separator() { return path_separator; } public String getLine_separator() { return line_separator; } public String getServer_context() { return server_context; } public String getServer_name() { return server_name; } public Integer getServer_port() { return server_port; } public String getServer_addr() { return server_addr; } public String getServer_host() { return server_host; } public String getServer_protocol() { return server_protocol; } public String getOs_version() { return os_version; } public Long getJvm_totalMemory() { return jvm_totalMemory; } public Long getJvm_freeMemory() { return jvm_freeMemory; } public Long getJvm_maxMemory() { return jvm_maxMemory; } @Override public String toString() { return "SystemInfo{" + "os_name='" + os_name + '\'' + ", os_arch='" + os_arch + '\'' + ", os_version='" + os_version + '\'' + ", os_ip='" + os_ip + '\'' + ", os_mac='" + os_mac + '\'' + ", os_date=" + os_date + ", os_cpus=" + os_cpus + ", jvm_totalMemory=" + jvm_totalMemory + ", jvm_freeMemory=" + jvm_freeMemory + ", jvm_maxMemory=" + jvm_maxMemory + ", os_user_name='" + os_user_name + '\'' + ", os_user_dir='" + os_user_dir + '\'' + ", os_user_home='" + os_user_home + '\'' + ", java_version='" + java_version + '\'' + ", java_io_tmpdir='" + java_io_tmpdir + '\'' + ", sun_desktop='" + sun_desktop + '\'' + ", file_separator='" + file_separator + '\'' + ", path_separator='" + path_separator + '\'' + ", line_separator='" + line_separator + '\'' + ", server_context='" + server_context + '\'' + ", server_name='" + server_name + '\'' + ", server_port=" + server_port + ", server_addr='" + server_addr + '\'' + ", server_host='" + server_host + '\'' + ", server_protocol='" + server_protocol + '\'' + '}'; } }