CiscoTool_v1/netmiko_Api/utils/testt.js

350 lines
11 KiB
JavaScript

const fs = require("fs");
const http = require("http");
const detectSerialNumber = async (fileName) => {
try {
let output = [];
const filetemp = fs.createWriteStream("./public/tempFolder/" + fileName);
const request = http.get(
"http://192.168.5.7:8080/" + fileName,
(response) => {
response.pipe(filetemp);
response.on("close", () => {
const data = fs.readFileSync(
"./public/tempFolder/" + fileName,
"utf8"
);
const arrayLine = data.split("\n");
for (let i = 0; i < arrayLine.length; i++) {
if (
arrayLine[i].search("PID:") !== -1 &&
arrayLine[i].search("SN:") !== -1
) {
if (
output.some(
(u) =>
u.SN ===
arrayLine[i]
?.split(",")[2]
.split(":")[1]
.replace("\r", "")
.trim()
)
) {
output.map((u, index) => {
if (
u.SN === arrayLine[i]?.split(",")[2].split(":")[1].trim()
) {
output[index].line = output[index].line.concat([i + 1]);
}
});
} else {
output.push({
PID:
arrayLine[i].split(",")[0] !== undefined
? arrayLine[i].split(",")[0].split(":")[1].trim()
: "",
SN:
arrayLine[i].split(",")[1] !== undefined
? arrayLine[i]
.split(",")[2]
.split(":")[1]
.replace("\r", "")
.trim()
: "",
line: [i + 1],
fileName: fileName,
});
}
}
}
console.log(output);
return output;
});
}
);
} catch (error) {
console.log(error);
}
};
const getParagraph = (fileName, line, range) => {
try {
const file = fs.createWriteStream("logFile.log");
const request = http.get(
"http://192.168.5.7:8080/" + fileName,
(response) => {
response.pipe(file);
response.on("close", () => {
const data = fs.readFileSync("logFile.log", "utf8");
const arrayLine = data.split("\n");
console.log(
arrayLine.slice(line - range - 1, line + range).join("\n")
);
});
}
);
} catch (error) {
console.log(error);
}
};
const getListLog = async () => {
try {
let listLog = [];
const file = fs.createWriteStream("listFile.log");
const request = http.get("http://192.168.5.7:8080/", (response) => {
response.pipe(file);
response.on("close", () => {
const data = fs.readFileSync("listFile.log", "utf8");
const arrayLine = data
.split("\n")
.filter(
(i) =>
i.search("<a href") !== -1 &&
i.search(".log") !== -1 &&
i.search("2016") !== -1
);
arrayLine.map((u) => {
let temp = u
.slice(u.search("<a ") + 9, u.search("</a>"))
.split(">")[1];
listLog.push(
"http://192.168.5.7:8080/" +
u
.slice(u.search("<a ") + 9, u.search("</a>"))
.split(">")[1]+" "
);
});
fs.writeFile(
"listFile.log",
listLog.slice(1).join("\n"),
function (err) {
if (err) {
return console.error(err);
}
console.log("Write log !");
}
);
});
});
} catch (error) {
console.log(error);
}
};
const test = async () => {
try {
let report = [];
const data = fs.readFileSync("listFile.log", "utf8");
const arrayLine1 = data.split("\n");
arrayLine1.map(async (file, index) => {
let output = [];
const old_data = fs.readFileSync("indexSN", "utf8");
// setTimeout(() => {
const filetemp = fs.createWriteStream("./public/tempFolder/" + file);
const request = http.get(
"http://192.168.5.7:8080/" + file,
(response) => {
response.pipe(filetemp);
// response.on
}
);
request.setTimeout(30000);
setTimeout(() => {
request.end();
// request.on("close", () => {
const data = fs.readFileSync("./public/tempFolder/" + file, "utf8");
const arrayLine = data.split("\n");
for (let i = 0; i < arrayLine.length; i++) {
if (
arrayLine[i].search("PID:") !== -1 &&
arrayLine[i].search("SN:") !== -1 &&
arrayLine[i]?.split(",")[2] !== undefined
) {
if (
output.some(
(u) =>
u.SN ===
arrayLine[i]
?.split(",")[2]
.split(":")[1]
.replace("\r", "")
.trim()
)
) {
output.map((u, index) => {
if (u.SN === arrayLine[i]?.split(",")[2].split(":")[1].trim()) {
output[index].line = output[index].line.concat([i + 1]);
}
});
} else {
output.push({
PID:
arrayLine[i].split(",")[0] !== undefined
? arrayLine[i].split(",")[0].split(":")[1].trim()
: "",
SN:
arrayLine[i].split(",")[1] !== undefined
? arrayLine[i]
.split(",")[2]
.split(":")[1]
.replace("\r", "")
.trim()
: "",
line: [i + 1],
fileName: file,
});
}
}
}
fs.unlink("./public/tempFolder/" + file, (err) => {
if (err) {
throw err;
}
console.log("File is deleted.");
});
});
console.log(output);
report = report.concat(output);
}, 200);
console.log(index);
// }, 300);
// })
setTimeout(() => {
fs.writeFile(
"indexSN",
JSON.stringify(report).replace(/,{/g, "\n,{"),
function (err) {
if (err) {
return console.error(err);
}
console.log("Write log !");
}
);
}, 45000);
} catch (error) {
console.log(error);
}
};
// getParagraph("20170626-TEST02-Session.NT8-192.168.5.20.log", 889779, 1);
// detectSerialNumber("20170404-TEST01-Session.NT3-192.168.5.20.log")
// test()
//47538 ;
// getListLog();
// const http = require('http');
const axios = require("axios");
const fetchFiles = async () => {
try {
await getListLog();
setTimeout(async () => {
const data = fs.readFileSync("listFile.log", "utf8");
const urls = data.split("\n");
console.log(urls.length);
let report = [];
const fileContents = await Promise.all(
urls.map(async (url) => {
const maxRetries = 10;
let retries = 0;
while (retries < maxRetries) {
try {
const response = await axios.get(url?.split(" ")[0]);
return response.data;
} catch (error) {
if (error.code !== "") {
//=== "ETIMEDOUT" || error.code === "ECONNRESET"
console.log("Connection timed out. Retrying...");
retries++;
} else {
console.error("Error fetching file:", error);
return;
}
}
}
})
);
// Handle the file contents
fileContents.forEach((content, index) => {
console.log(`Content of file ${index + 1}:`, content?.slice(500, 570));
const arrayLine = content?.split("\n");
let output = [];
for (let i = 0; i < arrayLine.length; i++) {
if (
arrayLine[i].search("PID:") !== -1 &&
arrayLine[i].search("SN:") !== -1 &&
arrayLine[i]
?.split(",")[2]
?.split(":")[1]
?.replace("\r", "")
.trim() !== ""
) {
// console.log(output)
// console.log(Array(arrayLine[i]?.split(",")[2].split(":")[1].replace("\r", "").trim()))
if (
output.some(
(u) =>
u.SN ===
arrayLine[i]
?.split(",")[2]
?.split(":")[1]
.replace("\r", "")
.trim()
)
) {
output.map((u, index) => {
if (u.SN === arrayLine[i]?.split(",")[2].split(":")[1].trim()) {
output[index].line = output[index].line.concat([i + 1]);
}
});
} else {
output.push({
PID:
arrayLine[i]?.split(",")[0] !== undefined
? arrayLine[i]?.split(",")[0]?.split(":")[1] !== undefined
? arrayLine[i]?.split(",")[0]?.split(":")[1]?.trim()
: ""
: "",
SN:
arrayLine[i].split(",")[1] !== undefined
? arrayLine[i]
?.split(",")[2]
?.split(":")[1]
?.replace("\r", "")
.trim()
: "",
line: [i + 1],
fileName: urls[index],
});
}
}
}
report = report.concat(output);
if (index + 1 === urls.length) {
fs.writeFile(
"indexSN",
JSON.stringify(report).replace(/,{/g, "\n,{"),
function (err) {
if (err) {
return console.error(err);
}
console.log("Write log !");
}
);
}
});
}, 10000);
} catch (error) {
console.error("Error fetching files:", error);
}
};
fetchFiles();