@Override public String getBiosVersion() { String override = this.m_kuraProperties.getProperty(KEY_BIOS_VERSION); if (override != null) { return override; } String biosVersion = UNSUPPORTED; if (OS_LINUX.equals(this.getOsName())) { if ("2.6.34.9-WR4.2.0.0_standard".equals(getOsVersion()) || "2.6.34.12-WR4.3.0.0_standard".equals(getOsVersion())) { biosVersion = runSystemInfoCommand("eth_vers_bios"); } else { String biosTmp = runSystemInfoCommand("dmidecode -s bios-version"); if (biosTmp.length() > 0 && !biosTmp.contains("Permission denied")) { biosVersion = biosTmp; } } } else if (OS_MAC_OSX.equals(this.getOsName())) { String[] cmds = {"/bin/sh", "-c", "system_profiler SPHardwareDataType | grep 'Boot ROM'"}; String biosTmp = runSystemInfoCommand(cmds); if (biosTmp.contains(": ")) { biosVersion = biosTmp.split(":\\s+")[1]; } } return biosVersion; }
@Override public String getSerialNumber() { String override = this.m_kuraProperties.getProperty(KEY_SERIAL_NUM); if (override != null) { return override; } String serialNum = UNKNOWN; if (OS_MAC_OSX.equals(this.getOsName())) { String[] cmds = { "/bin/sh", "-c", "system_profiler SPHardwareDataType | grep 'Serial Number'" }; String serialTmp = runSystemInfoCommand(cmds); if (serialTmp.contains(": ")) { serialNum = serialTmp.split(":\\s+")[1]; } } else if (OS_LINUX.equals(this.getOsName())) { String serialTmp = runSystemInfoCommand("dmidecode -t system"); if (serialTmp.contains("Serial Number: ")) { serialNum = serialTmp.split("Serial Number:\\s+")[1].split("\n")[0]; } } return serialNum; }
@Override public String getPrimaryNetworkInterfaceName() { if (m_kuraProperties.getProperty(KEY_PRIMARY_NET_IFACE) != null) { return this.m_kuraProperties.getProperty(KEY_PRIMARY_NET_IFACE); } else { if (OS_MAC_OSX.equals(getOsName())) { return "en0"; } else if (OS_LINUX.equals(getOsName())) { return "eth0"; } else { s_logger.error("Unsupported platform"); return null; } } }
@Override public String getDeviceName() { String override = this.m_kuraProperties.getProperty(KEY_DEVICE_NAME); if (override != null) { return override; } String deviceName = UNKNOWN; if (OS_MAC_OSX.equals(this.getOsName())) { String displayTmp = runSystemInfoCommand("scutil --get ComputerName"); if (displayTmp.length() > 0) { deviceName = displayTmp; } } else if (OS_LINUX.equals(this.getOsName()) || OS_CLOUDBEES.equals(this.getOsName())) { String displayTmp = runSystemInfoCommand("hostname"); if (displayTmp.length() > 0) { deviceName = displayTmp; } } return deviceName; }
@Override public String getModelId() { String override = this.m_kuraProperties.getProperty(KEY_MODEL_ID); if (override != null) { return override; } String modelId = UNKNOWN; if (OS_MAC_OSX.equals(this.getOsName())) { String modelTmp = runSystemInfoCommand("sysctl -b hw.model"); if (modelTmp.length() > 0) { modelId = modelTmp; } } else if (OS_LINUX.equals(this.getOsName())) { String modelTmp = runSystemInfoCommand("dmidecode -t system"); if (modelTmp.contains("Version: ")) { modelId = modelTmp.split("Version:\\s+")[1].split("\n")[0]; } } return modelId; }
@Override public String getModelName() { String override = this.m_kuraProperties.getProperty(KEY_MODEL_NAME); if (override != null) { return override; } String modelName = UNKNOWN; if (OS_MAC_OSX.equals(this.getOsName())) { String[] cmds = {"/bin/sh", "-c", "system_profiler SPHardwareDataType | grep 'Model Name'"}; String modelTmp = runSystemInfoCommand(cmds); if (modelTmp.contains(": ")) { modelName = modelTmp.split(":\\s+")[1]; } } else if (OS_LINUX.equals(this.getOsName())) { String modelTmp = runSystemInfoCommand("dmidecode -t system"); if (modelTmp.contains("Product Name: ")) { modelName = modelTmp.split("Product Name:\\s+")[1].split("\n")[0]; } } return modelName; }
@Override public String getPrimaryMacAddress() { String primaryNetworkInterfaceName = getPrimaryNetworkInterfaceName(); String macAddress = null; if (OS_MAC_OSX.equals(getOsName())) { SafeProcess proc = null; try { s_logger.info("executing: ifconfig and looking for " + primaryNetworkInterfaceName); proc = ProcessUtil.exec("ifconfig"); BufferedReader br = null; try { proc.waitFor(); br = new BufferedReader(new InputStreamReader(proc.getInputStream())); String line = null; while ((line = br.readLine()) != null) { if (line.startsWith(primaryNetworkInterfaceName)) { // get the next line and save the MAC line = br.readLine(); if (line == null) { throw new IOException("Null imput!"); } if (!line.trim().startsWith("ether")) { line = br.readLine(); } String[] splitLine = line.split(" "); if (splitLine.length > 0) { return splitLine[1].toUpperCase(); } } } } catch (InterruptedException e) { s_logger.error("Exception while executing ifconfig!", e); } finally { if (br != null) { try { br.close(); } catch (IOException ex) { s_logger.error("I/O Exception while closing BufferedReader!"); } } } } catch (Exception e) { s_logger.error("Failed to get network interfaces", e); } finally { if (proc != null) { ProcessUtil.destroy(proc); } } } else { try { List<NetInterface<? extends NetInterfaceAddress>> interfaces = m_networkService.getNetworkInterfaces(); if (interfaces != null) { for (NetInterface<? extends NetInterfaceAddress> iface : interfaces) { if (iface.getName() != null && getPrimaryNetworkInterfaceName().equals(iface.getName())) { macAddress = NetUtil.hardwareAddressToString(iface.getHardwareAddress()); break; } } } } catch (KuraException e) { s_logger.error("Failed to get network interfaces", e); } } return macAddress; }