package com.netsdk.demo.customize;
|
|
import static com.netsdk.lib.Utils.getOsPrefix;
|
|
import java.io.File;
|
import java.io.UnsupportedEncodingException;
|
import java.text.SimpleDateFormat;
|
|
import com.netsdk.demo.util.CaseMenu;
|
import com.netsdk.lib.NetSDKLib;
|
import com.netsdk.lib.ToolKits;
|
import com.netsdk.lib.NetSDKLib.NET_CAMERA_STATE_INFO;
|
import com.netsdk.lib.NetSDKLib.NET_IN_GET_CAMERA_STATEINFO;
|
import com.netsdk.lib.NetSDKLib.NET_OUT_GET_CAMERA_STATEINFO;
|
import com.netsdk.lib.callback.impl.DefaultDisconnectCallback;
|
import com.netsdk.lib.callback.impl.DefaultHaveReconnectCallBack;
|
import com.netsdk.lib.enumeration.NET_VOLUME_TYPE;
|
import com.netsdk.lib.structure.*;
|
import com.sun.jna.Memory;
|
import com.sun.jna.Native;
|
import com.sun.jna.Pointer;
|
|
/**
|
* 1、查询通道的状态 2、查询NVR的CPU、内存、温度 3、查询NVR的硬盘健康信息,smart信息 4、查询NVR的在离线状态:
|
* NVR:SDK连不上NVR则代表设备异常 NVR状态判断逻辑:设备登录成功即在线,链接断开或心跳超时sdk会回调断线给应用层,可以判断设备在线离线
|
*/
|
public class GetSystenStatusDemo {
|
|
// SDk对象初始化
|
public static final NetSDKLib netsdk = NetSDKLib.NETSDK_INSTANCE;
|
public static final NetSDKLib configsdk = NetSDKLib.CONFIG_INSTANCE;
|
|
// 判断是否初始化
|
private static boolean bInit = false;
|
// 判断log是否打开
|
private static boolean bLogOpen = false;
|
// 设备信息
|
private NetSDKLib.NET_DEVICEINFO_Ex deviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex();
|
// 登录句柄
|
private static NetSDKLib.LLong m_hLoginHandle = new NetSDKLib.LLong(0);
|
|
// 回调函数需要是静态的,防止被系统回收
|
// 断线回调
|
private static NetSDKLib.fDisConnect disConnectCB = DefaultDisconnectCallback.getINSTANCE();
|
// 重连回调
|
private static NetSDKLib.fHaveReConnect haveReConnectCB = DefaultHaveReconnectCallBack.getINSTANCE();
|
|
// 编码格式
|
public static String encode;
|
|
static {
|
String osPrefix = getOsPrefix();
|
if (osPrefix.toLowerCase().startsWith("win32-amd64")) {
|
encode = "GBK";
|
} else if (osPrefix.toLowerCase().startsWith("linux-amd64")) {
|
encode = "UTF-8";
|
}
|
}
|
|
// 获取当前时间
|
public static String getDate() {
|
SimpleDateFormat simpleDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
String date = simpleDate.format(new java.util.Date()).replace(" ", "_").replace(":", "-");
|
return date;
|
}
|
|
/**
|
* 初始化SDK库
|
*/
|
public static boolean Init() {
|
bInit = netsdk.CLIENT_Init(disConnectCB, null);
|
if (!bInit) {
|
System.out.println("Initialize SDK failed");
|
return false;
|
}
|
// 配置日志
|
GetSystenStatusDemo.enableLog();
|
|
// 设置断线重连回调接口, 此操作为可选操作,但建议用户进行设置
|
netsdk.CLIENT_SetAutoReconnect(haveReConnectCB, null);
|
|
// 设置登录超时时间和尝试次数,可选
|
// 登录请求响应超时时间设置为3S
|
int waitTime = 3000;
|
// 登录时尝试建立链接 1 次
|
int tryTimes = 1;
|
netsdk.CLIENT_SetConnectTime(waitTime, tryTimes);
|
// 设置更多网络参数, NET_PARAM 的nWaittime , nConnectTryNum 成员与 CLIENT_SetConnectTime
|
// 接口设置的登录设备超时时间和尝试次数意义相同,可选
|
NetSDKLib.NET_PARAM netParam = new NetSDKLib.NET_PARAM();
|
// 登录时尝试建立链接的超时时间
|
netParam.nConnectTime = 10000;
|
// 设置子连接的超时时间
|
netParam.nGetConnInfoTime = 3000;
|
netsdk.CLIENT_SetNetworkParam(netParam);
|
return true;
|
}
|
|
/**
|
* 打开 sdk log
|
*/
|
private static void enableLog() {
|
NetSDKLib.LOG_SET_PRINT_INFO setLog = new NetSDKLib.LOG_SET_PRINT_INFO();
|
File path = new File("sdklog/");
|
if (!path.exists())
|
path.mkdir();
|
|
// 这里的log保存地址依据实际情况自己调整
|
String logPath = path.getAbsoluteFile().getParent() + "\\sdklog\\" + "sdklog" + getDate() + ".log";
|
setLog.nPrintStrategy = 0;
|
setLog.bSetFilePath = 1;
|
System.arraycopy(logPath.getBytes(), 0, setLog.szLogFilePath, 0, logPath.getBytes().length);
|
System.out.println(logPath);
|
setLog.bSetPrintStrategy = 1;
|
bLogOpen = netsdk.CLIENT_LogOpen(setLog);
|
if (!bLogOpen)
|
System.err.println("Failed to open NetSDK log");
|
}
|
|
/**
|
* 高安全登录
|
*/
|
public void loginWithHighLevel() {
|
// 输入结构体参数
|
NetSDKLib.NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY pstlnParam = new NetSDKLib.NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY() {
|
{
|
szIP = m_strIpAddr.getBytes();
|
nPort = m_nPort;
|
szUserName = m_strUser.getBytes();
|
szPassword = m_strPassword.getBytes();
|
}
|
};
|
// 输出结构体参数
|
NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY pstOutParam = new NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY();
|
|
// 写入sdk
|
m_hLoginHandle = netsdk.CLIENT_LoginWithHighLevelSecurity(pstlnParam, pstOutParam);
|
if (m_hLoginHandle.longValue() == 0) {
|
System.err.printf("Login Device[%s] Port[%d]Failed. %s\n", m_strIpAddr, m_nPort,
|
netsdk.CLIENT_GetLastError());
|
} else {
|
deviceInfo = pstOutParam.stuDeviceInfo; // 获取设备信息
|
System.out.println("Login Success");
|
System.out.println("Device Address:" + m_strIpAddr);
|
System.out.println("设备包含:" + deviceInfo.byChanNum + "个通道");
|
}
|
}
|
|
/**
|
* 退出
|
*/
|
public void logOut() {
|
if (m_hLoginHandle.longValue() != 0) {
|
netsdk.CLIENT_Logout(m_hLoginHandle);
|
System.out.println("LogOut Success");
|
}
|
}
|
|
/**
|
* 清除 sdk环境
|
*/
|
public static void cleanup() {
|
if (bLogOpen) {
|
netsdk.CLIENT_LogClose();
|
}
|
if (bInit) {
|
netsdk.CLIENT_Cleanup();
|
}
|
}
|
|
/**
|
* 清理并退出
|
*/
|
public static void cleanAndExit() {
|
netsdk.CLIENT_Cleanup();
|
System.exit(0);
|
}
|
|
/**
|
* 查询通道状态
|
*/
|
public void queryCameraState() {
|
// 入参
|
NET_IN_GET_CAMERA_STATEINFO stIn = new NET_IN_GET_CAMERA_STATEINFO();
|
stIn.bGetAllFlag = 1; // 全部
|
|
// 出参
|
NET_OUT_GET_CAMERA_STATEINFO stOut = new NET_OUT_GET_CAMERA_STATEINFO();
|
stOut.nMaxNum = deviceInfo.byChanNum; // 设备通道个数
|
|
NET_CAMERA_STATE_INFO[] arrCameraStatus = new NET_CAMERA_STATE_INFO[deviceInfo.byChanNum];
|
for (int i = 0; i < arrCameraStatus.length; i++) {
|
arrCameraStatus[i] = new NET_CAMERA_STATE_INFO(); // 必须初始化结构体
|
}
|
stOut.pCameraStateInfo = new Memory(arrCameraStatus[0].size() * deviceInfo.byChanNum);
|
stOut.pCameraStateInfo.clear(arrCameraStatus[0].size() * deviceInfo.byChanNum);
|
ToolKits.SetStructArrToPointerData(arrCameraStatus, stOut.pCameraStateInfo); // 将数组内存拷贝到Pointer
|
|
stIn.write();
|
stOut.write();
|
|
boolean bRet = netsdk.CLIENT_QueryDevInfo(m_hLoginHandle, NetSDKLib.NET_QUERY_GET_CAMERA_STATE,
|
stIn.getPointer(), stOut.getPointer(), null, 3000);
|
if (bRet) {
|
stOut.read();
|
ToolKits.GetPointerDataToStructArr(stOut.pCameraStateInfo, arrCameraStatus); // 将Pointer拷贝到数组内存
|
final String[] connectionState = { "未知", "正在连接", "已连接", "未连接", "通道未配置,无信息", "通道有配置,但被禁用" };
|
for (int i = 0; i < stOut.nValidNum; ++i) {
|
System.out.printf("通道%d:%s ", arrCameraStatus[i].nChannel,
|
connectionState[arrCameraStatus[i].emConnectionState]);
|
if ((i + 1) % 8 == 0) {
|
System.out.println();
|
}
|
}
|
} else {
|
System.err.println("getCameraState Failed!" + ToolKits.getErrorCode());
|
}
|
}
|
|
/**
|
* 查询NVR的CPU、内存、温度信息
|
*/
|
public void querySystemStatus() {
|
// 入参
|
NET_SYSTEM_STATUS netSystemStatus = new NET_SYSTEM_STATUS();
|
// CPU 状态
|
NET_CPU_STATUS netCpuStatus = new NET_CPU_STATUS();
|
netSystemStatus.pstuCPU = new Memory(netCpuStatus.size());
|
netSystemStatus.pstuCPU.clear(netCpuStatus.size());
|
ToolKits.SetStructDataToPointer(netCpuStatus, netSystemStatus.pstuCPU, 0);
|
|
// 内存状态
|
NET_MEMORY_STATUS netMemoryStatus = new NET_MEMORY_STATUS();
|
netSystemStatus.pstuMemory = new Memory(netMemoryStatus.size());
|
ToolKits.SetStructDataToPointer(netMemoryStatus, netSystemStatus.pstuMemory, 0);
|
// 风扇状态
|
NET_FAN_STATUS netFanStatus = new NET_FAN_STATUS();
|
netSystemStatus.pstuFan = new Memory(netFanStatus.size());
|
ToolKits.SetStructDataToPointer(netFanStatus, netSystemStatus.pstuFan, 0);
|
|
// 电源状态
|
NET_POWER_STATUS netPowerStatus = new NET_POWER_STATUS();
|
netSystemStatus.pstuPower = new Memory(netPowerStatus.size());
|
ToolKits.SetStructDataToPointer(netPowerStatus, netSystemStatus.pstuPower, 0);
|
|
// 温度状态
|
NET_TEMPERATURE_STATUS netTemperatureStatus = new NET_TEMPERATURE_STATUS();
|
netSystemStatus.pstuTemp = new Memory(netTemperatureStatus.size());
|
ToolKits.SetStructDataToPointer(netTemperatureStatus, netSystemStatus.pstuTemp, 0);
|
|
netSystemStatus.write();
|
boolean ret = netsdk.CLIENT_QuerySystemStatus(m_hLoginHandle, netSystemStatus.getPointer(), 3000);
|
if (ret) {
|
System.out.println("查询成功!");
|
netSystemStatus.read();
|
ToolKits.GetPointerData(netSystemStatus.pstuCPU, netCpuStatus);
|
ToolKits.GetPointerData(netSystemStatus.pstuMemory, netMemoryStatus);
|
ToolKits.GetPointerData(netSystemStatus.pstuFan, netFanStatus);
|
ToolKits.GetPointerData(netSystemStatus.pstuPower, netPowerStatus);
|
ToolKits.GetPointerData(netSystemStatus.pstuPower, netPowerStatus);
|
ToolKits.GetPointerData(netSystemStatus.pstuTemp, netTemperatureStatus);
|
|
// cpu信息
|
System.out.println("cpu状态-> 数量: " + netCpuStatus.nCount + " 查询是否成功: " + netCpuStatus.bEnable);
|
|
for (int i = 0; i < netCpuStatus.nCount; i++) {
|
System.out.println("CPU使用率 :" + netCpuStatus.stuCPUs[i].nUsage);
|
}
|
|
// 内存信息
|
System.out.println("内存信息:" + netMemoryStatus.bEnable + " 总量: " + netMemoryStatus.stuMemory.dwTotal);
|
|
// 电源信息
|
System.out.println("电源数量-> 数量: " + netPowerStatus.nCount + " 查询是否成功: " + netFanStatus.bEnable);
|
System.out.println("电池数量-> 数量: " + netPowerStatus.nBatteryNum + " 查询是否成功: " + netFanStatus.bEnable);
|
for (int i = 0; i < netPowerStatus.nCount; i++) {
|
System.out.printf("电源状态:" + netPowerStatus.stuPowers[i].bPowerOn);
|
}
|
for (int i = 0; i < netPowerStatus.nBatteryNum; i++) {
|
System.out.printf("电池状态:" + netPowerStatus.stuBatteries[i].emTemperState);
|
}
|
// 风扇状态
|
System.out.println("风扇状态-> 数量: " + netFanStatus.nCount + " 查询是否成功: " + netFanStatus.bEnable);
|
for (int i = 0; i < netFanStatus.nCount; i++) {
|
try {
|
System.out.println("速度: " + netFanStatus.stuFans[i].nSpeed + " 名称:"
|
+ new String(netFanStatus.stuFans[i].szName, encode));
|
} catch (UnsupportedEncodingException e) {
|
e.printStackTrace();
|
}
|
}
|
// 温度信息
|
System.out
|
.println("温度信息-> 数量: " + netTemperatureStatus.nCount + " 查询是否成功: " + netTemperatureStatus.bEnable);
|
for (int i = 0; i < netTemperatureStatus.nCount; i++) {
|
try {
|
// 温度类型
|
// {
|
// Power: 电源
|
// Global: 环境
|
// Mainboard: 主板
|
// Backboard: 背板
|
// CPU: 处理器
|
// }
|
System.out.println("温度信息: " + netTemperatureStatus.stuTemps[i].fTemperature + " 传感器名称:"
|
+ new String(netTemperatureStatus.stuTemps[i].szName, encode));
|
} catch (UnsupportedEncodingException e) {
|
e.printStackTrace();
|
}
|
}
|
} else {
|
System.err.println("系统状态查询失败!!!" + ToolKits.getErrorCode());
|
}
|
}
|
/**
|
* 获取物理硬盘状态
|
*/
|
public void getIVSSDisk() {
|
NET_IN_STORAGE_DEV_INFOS inInfo = new NET_IN_STORAGE_DEV_INFOS();
|
inInfo.emVolumeType = NET_VOLUME_TYPE.VOLUME_TYPE_ALL; // 单盘可以查询支持的工作组
|
NET_OUT_STORAGE_DEV_INFOS outInfo = new NET_OUT_STORAGE_DEV_INFOS();
|
for (int i = 0; i < outInfo.stuStoregeDevInfos.length; i++) {
|
outInfo.stuStoregeDevInfos[i].dwSize = outInfo.stuStoregeDevInfos[0].dwSize;
|
}
|
inInfo.write();
|
outInfo.write();
|
boolean bRet = netsdk.CLIENT_QueryDevInfo(m_hLoginHandle, NetSDKLib.NET_QUERY_DEV_STORAGE_INFOS,
|
inInfo.getPointer(), outInfo.getPointer(), null, 5000);
|
inInfo.read();
|
outInfo.read();
|
if (!bRet) {
|
System.err.println("CLIENT_QueryDevInfo Failed!" + ToolKits.getErrorCode());
|
return;
|
}
|
for (int i = 0; i < outInfo.nDevInfosNum; i++) {
|
NET_STORAGE_DEVICE device = outInfo.stuStoregeDevInfos[i];
|
System.out.println(device.nPhysicNo); // 槽位
|
System.out.println(new String(device.szName).trim()); // 名称
|
System.out.println("总空间(byte):" + device.nTotalSpace);
|
System.out.println("剩余空间(byte):" + device.nFreeSpace);
|
System.out.println("型号:" + new String(device.szModule).trim()); // 型号
|
String valume[] = { "0-物理卷", "1-Raid卷", "2-VG虚拟卷", "3-ISCSI", "4-独立物理卷", "5-全局热备卷",
|
"6-NAS卷(包括FTP, SAMBA, NFS)", "7-独立RAID卷(指没有加入到,虚拟卷组等组中)" };
|
System.out.println("卷类型:" + valume[device.byVolume]);
|
String arState[] = { "Offline-物理硬盘脱机状态", "Running-物理硬盘运行状态", "Active-RAID活动", "Sync-RAID同步",
|
"Spare-RAID热备(局部)", "Faulty-RAID失效", "Rebuilding-RAID重建", "Removed-RAID移除", "WriteError-RAID写错误",
|
"WantReplacement-RAID需要被替换", "Replacement-RAID是替代设备", "GlobalSpare-全局热备", "Error-一般错误,部分分区可用",
|
"RaidSub-该盘目前是单盘,原先是块Raid子盘,有可能在重启后自动加入Raid", };
|
System.out.println("物理硬盘状态:" + arState[(int) device.byState]); // 获取物理硬盘状态,参考NetFinalVar
|
}
|
}
|
|
|
/**
|
* 获取Smart信息
|
* @throws UnsupportedEncodingException
|
*/
|
public void getDevStorageSmartValue() throws UnsupportedEncodingException {
|
// 入参
|
NET_IN_GET_DEV_STORAGE_SMART_VALUE inInfo = new NET_IN_GET_DEV_STORAGE_SMART_VALUE();
|
// 存储设备名称
|
String szName = "/dev/sda"; // 该参数值通过getIVSSDisk接口中出参NET_OUT_STORAGE_DEV_INFOS - NET_STORAGE_DEVICE - szName字段获取
|
System.arraycopy(szName.getBytes(), 0,inInfo.szName,0,szName.getBytes().length);
|
|
// 出参
|
NET_OUT_GET_DEV_STORAGE_SMART_VALUE outInfo = new NET_OUT_GET_DEV_STORAGE_SMART_VALUE();
|
|
inInfo.write();
|
outInfo.write();
|
boolean bRet = netsdk.CLIENT_GetDevStorageSmartValue(m_hLoginHandle,inInfo.getPointer(), outInfo.getPointer(), 5000);
|
inInfo.read();
|
outInfo.read();
|
if (!bRet) {
|
System.err.println("CLIENT_GetDevStorageSmartValue Failed!" + ToolKits.getErrorCode());
|
return;
|
}
|
System.out.println("设备SMART信息个数:"+outInfo.nCount);
|
// 设备SMART信息
|
NET_SMART_VALUE_INFO[] stuValuesInfo =outInfo.stuValuesInfo;
|
for (int i = 0; i < outInfo.nCount; i++) {
|
System.out.println("----------第"+(i+1)+"个SMART信息-----------");
|
System.out.println("属性ID:"+stuValuesInfo[i].nID);
|
System.out.println("属性名:"+new String(stuValuesInfo[i].szName,encode));
|
System.out.println("状态:"+stuValuesInfo[i].nPredict);
|
System.out.println("Raid同步状态:"+stuValuesInfo[i].nSync);
|
}
|
|
}
|
|
/**
|
* 获取设备上传与发送速率
|
*/
|
public void getDeviceEthBandInfo() {
|
// 入参
|
NET_IN_GET_DEVICE_ETH_BAND_INFO inInfo = new NET_IN_GET_DEVICE_ETH_BAND_INFO();
|
// 出参
|
NET_OUT_GET_DEVICE_ETH_BAND_INFO outInfo = new NET_OUT_GET_DEVICE_ETH_BAND_INFO();
|
|
inInfo.write();
|
outInfo.write();
|
boolean bRet = netsdk.CLIENT_GetDeviceEthBandInfo(m_hLoginHandle,inInfo.getPointer(), outInfo.getPointer(), 5000);
|
inInfo.read();
|
outInfo.read();
|
if (!bRet) {
|
System.err.println("CLIENT_GetDeviceEthBandInfo Failed!" + ToolKits.getErrorCode());
|
return;
|
}
|
System.out.println("网卡信息个数:"+outInfo.nCount);
|
// 网卡信息
|
NET_BAND_SPEED_INFO[] stuBandSpeedInfo = outInfo.stuBandSpeedInfo;
|
for (int i = 0; i < outInfo.nCount; i++) {
|
System.out.println("----------第"+(i+1)+"个网卡信息-----------");
|
System.out.println("网卡名称:"+new String(stuBandSpeedInfo[i].szEthName));
|
System.out.println("网卡接收速率,单位 Mb/s:"+stuBandSpeedInfo[i].dbReceivedBytes);
|
System.out.println("网卡发送速率,单位 Mb/s:"+stuBandSpeedInfo[i].dbTransmittedBytes);
|
}
|
}
|
|
/**
|
* 获取物理硬盘状态(指针方式)
|
*/
|
public void getStorageDevInfosSp(){
|
// 入参
|
NET_IN_STORAGE_DEV_INFOS inInfo = new NET_IN_STORAGE_DEV_INFOS();
|
inInfo.emVolumeType = NET_VOLUME_TYPE.VOLUME_TYPE_ALL; // 单盘可以查询支持的工作组
|
// 出参
|
NET_OUT_STORAGE_DEV_INFOS_SP outInfo = new NET_OUT_STORAGE_DEV_INFOS_SP();
|
// 先设置默认设备数,在获取后会修改为实际获取设备数
|
outInfo.nDevInfosNum = 0;
|
// 设置返回最大设备数
|
outInfo.nMaxDevInfosNum = 10;
|
// 调用前先申请内存空间
|
NET_STORAGE_DEVICE[] deviceInfos = new NET_STORAGE_DEVICE[outInfo.nMaxDevInfosNum];
|
for (int i = 0; i < deviceInfos.length; i++) {
|
deviceInfos[i] = new NET_STORAGE_DEVICE();
|
deviceInfos[i].dwSize = outInfo.dwSize;
|
}
|
int len = new NET_WPAN_ACCESSORY_INFO().size() * deviceInfos.length;
|
Pointer deviceInfosPointer = new Memory(len);
|
deviceInfosPointer.clear(len);
|
ToolKits.SetStructArrToPointerData(deviceInfos, deviceInfosPointer);
|
|
outInfo.pstuStoregeDevInfos = deviceInfosPointer;
|
|
Pointer params = new Memory(outInfo.size());
|
params.clear(outInfo.size());
|
ToolKits.SetStructDataToPointer(outInfo, params, 0);
|
inInfo.write();
|
|
boolean bRet = netsdk.CLIENT_QueryDevInfo(m_hLoginHandle, NetSDKLib.NET_QUERY_DEV_STORAGE_INFOS_SP, inInfo.getPointer(), params, null, 3000);
|
|
inInfo.read();
|
|
if (bRet) {
|
ToolKits.GetPointerData(params, outInfo);
|
// 释放内存
|
Native.free(Pointer.nativeValue(params));
|
Pointer.nativeValue(params, 0);
|
System.out.println("CLIENT_QueryDevInfo success!");
|
int nDevInfosNum = outInfo.nDevInfosNum;
|
System.out.println("nDevInfosNum:" + nDevInfosNum);
|
|
ToolKits.GetPointerDataToStructArr(outInfo.pstuStoregeDevInfos, deviceInfos);
|
// 清理指针的内存空间
|
Native.free(Pointer.nativeValue(deviceInfosPointer));
|
Pointer.nativeValue(deviceInfosPointer, 0);
|
|
for (int i = 0; i < outInfo.nDevInfosNum; i++) {
|
NET_STORAGE_DEVICE device = deviceInfos[i];
|
|
System.out.println("槽位:" + device.nPhysicNo); // 槽位
|
System.out.println("总空间(byte):" + device.nTotalSpace);
|
System.out.println("剩余空间(byte):" + device.nFreeSpace);
|
String valume[] = { "0-物理卷", "1-Raid卷", "2-VG虚拟卷", "3-ISCSI", "4-独立物理卷", "5-全局热备卷",
|
"6-NAS卷(包括FTP, SAMBA, NFS)", "7-独立RAID卷(指没有加入到,虚拟卷组等组中)" };
|
System.out.println("卷类型:" + valume[device.byVolume]);
|
String arState[] = { "Offline-物理硬盘脱机状态", "Running-物理硬盘运行状态", "Active-RAID活动", "Sync-RAID同步",
|
"Spare-RAID热备(局部)", "Faulty-RAID失效", "Rebuilding-RAID重建", "Removed-RAID移除", "WriteError-RAID写错误",
|
"WantReplacement-RAID需要被替换", "Replacement-RAID是替代设备", "GlobalSpare-全局热备", "Error-一般错误,部分分区可用",
|
"RaidSub-该盘目前是单盘,原先是块Raid子盘,有可能在重启后自动加入Raid", };
|
System.out.println("物理硬盘状态:" + arState[(int) device.byState]); // 获取物理硬盘状态,参考NetFinalVar
|
try {
|
System.out.println("名称:" + new String(device.szName,encode).trim()); // 名称
|
System.out.println("型号:" + new String(device.szModule,encode).trim()); // 型号
|
} catch (UnsupportedEncodingException e) {
|
e.printStackTrace();
|
}
|
}
|
} else {
|
// 释放内存
|
Native.free(Pointer.nativeValue(params));
|
Pointer.nativeValue(params, 0);
|
System.err.println("CLIENT_QueryDevInfo Failed!" + ToolKits.getErrorCode());
|
return;
|
}
|
}
|
|
/******************************** 测试控制台 ***************************************/
|
|
// 配置登陆地址,端口,用户名,密码
|
private String m_strIpAddr = "172.13.138.13";
|
private int m_nPort = 37777;
|
private String m_strUser = "admin";
|
private String m_strPassword = "hzci202216";
|
|
public static void main(String[] args) {
|
GetSystenStatusDemo demo = new GetSystenStatusDemo();
|
demo.InitTest();
|
demo.RunTest();
|
demo.EndTest();
|
}
|
|
/**
|
* 初始化测试
|
*/
|
public void InitTest() {
|
GetSystenStatusDemo.Init();
|
this.loginWithHighLevel();
|
}
|
|
/**
|
* 加载测试内容
|
*/
|
public void RunTest() {
|
CaseMenu menu = new CaseMenu();
|
menu.addItem(new CaseMenu.Item(this, "查询通道状态", "queryCameraState"));
|
menu.addItem(new CaseMenu.Item(this, "查询NVR的CPU、内存、温度信息", "querySystemStatus"));
|
menu.addItem(new CaseMenu.Item(this, "获取物理硬盘状态", "getIVSSDisk"));
|
menu.addItem(new CaseMenu.Item(this, "获取Smart信息", "getDevStorageSmartValue"));
|
menu.addItem(new CaseMenu.Item(this, "获取设备上传与发送速率", "getDeviceEthBandInfo"));
|
menu.addItem(new CaseMenu.Item(this, "获取物理硬盘状态(指针方式)", "getStorageDevInfosSp"));
|
menu.run();
|
}
|
|
/**
|
* 结束测试
|
*/
|
public void EndTest() {
|
System.out.println("End Test");
|
this.logOut(); // 退出
|
System.out.println("See You...");
|
GetSystenStatusDemo.cleanAndExit(); // 清理资源并退出
|
}
|
}
|