1. 拆分字段值
解析{#ADVSPOOLRELATION}字段,根据空格拆分字段值,赋值给两个宏{#VSNAME}、{#POOLNAME}。
var data = JSON.parse(value),arr=[];
for(var i=0;i<data.length;i++){
var val = data[i]['{#ADVSPOOLRELATION}']
var valData = val?val.split(' '):[];
if(val){
var obj={
'VSNAME':valData[0],
"POOLNAME":valData[1]
}
}
arr.push(obj)
}
return JSON.stringify(arr)
原始数据
[
{
"{#SNMPINDEX}": 1,
"{#ADVSPOOLRELATION}": "aaa-30-vs aaa-30-pool"
},
{
"{#SNMPINDEX}": 2,
"{#ADVSPOOLRELATION}": "aaa-40-vs aaa-40-pool"
}
]
最后结果
[
{
"{#VSNAME}": "aaa-30-vs",
"{#POOLNAME}": "aaa-30-pool"
},
{
"{#VSNAME}": "aaa-40-vs",
"{#POOLNAME}": "aaa-40-pool"
}
]
2. 解析传感器命令返回
传感器命令可以返回模块、温度、电源等信息
// 定义正则表达式
var pciPattern = /^(loc1):\s+\+(\d+\.\d+)°C/;
var isaPattern = /^Physical id (\d+):\s+\+(\d+\.\d+)°C/;
var corePattern = /^Core (\d+):\s+\+(\d+\.\d+)°C/;
var powerPattern = /^(.+):\s+(\d+\.\d+)\s+W/;
// 结果对象
var result = [];
var templateArr = value.split("\n\n");
for (var j = 0; j < templateArr.length; j++) {
var lines = templateArr[j].split("\n");
var lineKey = lines[0].replace('\r','');
var coreDataCount = 0,
coreDataLength = 0;
for (var i = 0; i < lines.length; i++) {
var line = lines[i].trim();
// 匹配 PCI
var pciMatch = line.match(pciPattern);
if (pciMatch) {
var item = {
"{#NAME}": lineKey + " " + pciMatch[1],
"{#VALUE}": pciMatch[2]
};
result.push(item);
continue;
}
// 匹配 ISA 物理ID
var isaMatch = line.match(isaPattern);
if (isaMatch) {
var item = {
"{#NAME}": lineKey + " " + "Physical id " + isaMatch[1],
"{#VALUE}": isaMatch[2]
};
result.push(item);
continue;
}
// console.log(result);
// 匹配 ISA 核心温度
var coreMatch = line.match(corePattern);
if (coreMatch) {
coreDataCount += Number(coreMatch[2]);
coreDataLength++;
// var adapter = result[isaMatch[1]];
// if (!adapter.cores) {
// adapter.cores = [];
// }
// adapter.cores.push(coreMatch[2]);
continue;
}
// 匹配电源
var powerMatch = line.match(powerPattern);
if (powerMatch) {
var item = {
"{#NAME}": lineKey + " " + powerMatch[1],
"{#VALUE}": powerMatch[2]
};
result.push(item);
}
}
var avg = (coreDataCount / coreDataLength).toFixed(2);
if (coreDataLength) {
var item = {
"{#NAME}": lineKey + " Core avg",
"{#VALUE}": avg
};
result.push(item);
}
}
// 返回JSON化的结果
return JSON.stringify(result);
}
原始数据
coretemp-isa-0000
Adapter: ISA adapter
Package id 0: +100.0°C (high = +100.0°C, crit = +100.0°C)
Core 0: +100.0°C (high = +100.0°C, crit = +100.0°C)
Core 1: +100.0°C (high = +100.0°C, crit = +100.0°C)
coretemp-isa-0001
Adapter: ISA adapter
Package id 1: +100.0°C (high = +100.0°C, crit = +100.0°C)
Core 0: +100.0°C (high = +100.0°C, crit = +100.0°C)
Core 1: +100.0°C (high = +100.0°C, crit = +100.0°C)
最后结果
[
{
"{#NAME}": "coretemp-isa-0000 Core avg",
"{#VALUE}": "100.00"
},
{
"{#NAME}": "coretemp-isa-0001 Core avg",
"{#VALUE}": "100.00"
}
]
3. 判断文件是否存在(以天轮换)
开启远程执行命令选项
配置一个system.run[dir /b E:\opt]获取目录下所有文件,使用JavaScript对返回数据进行比对是否存在以及文件的修改时间。
var currentDate = new Date();
var year = currentDate.getFullYear();
var month = currentDate.getMonth() + 1;
var day = currentDate.getDate();
month = (month < 10 ? '0' : '') + month;
day = (day < 10 ? '0' : '') + day;
const date = year+''+month+''+day;
const fileData=['sss'+date+'.txt','bbb'+date+'.txt'];
const fileResult=[];
for(var i=0;i<fileData.length;i++){
const index = value.indexOf(fileData[i]);
if(index!=-1){
fileResult.push({
"exists": 1,
"filename": 'E:\\opt\\'+fileData[i]
})
}else {
fileResult.push({
"exists": 0,
"filename": 'E:\\opt\\'+fileData[i]
})
}
}
return JSON.stringify(fileResult)
返回结果:
[
{
"exists": 1,
"filename": "E:\\opt\\sss20240919.txt"
},
{
"exists": 0,
"filename": "E:\\opt\\bbb20240919.txt"
}
]