60 lines
2.5 KiB
JavaScript
60 lines
2.5 KiB
JavaScript
/** @param {NS} ns */
|
|
export async function main(ns) {
|
|
ns.tail();
|
|
const sTarget = ns.args[0]; // target server
|
|
|
|
// declare objects
|
|
const oHome = ns.getServer("home");
|
|
//const oTarget = ns.getServer(sTarget);
|
|
|
|
// Lowram settings
|
|
const sBatchScript = "lowram/Lowhgw.js";
|
|
const sPrepScript = "lowram/Lowprep.js";
|
|
const sRunScript = "lowram/Lowrun.js";
|
|
const sGrowScript = "lowram/Lowgrow.js";
|
|
|
|
//declare variables
|
|
const sWeakenScript = "RMweaken.js";
|
|
const nCores = oHome.cpuCores;
|
|
let nSecurity = ns.getServerSecurityLevel(sTarget);
|
|
const nMinSecurity = ns.getServerMinSecurityLevel(sTarget);
|
|
const nWeakenSTR = ns.weakenAnalyze(1, nCores);
|
|
let nThreads = Math.ceil((nSecurity - nMinSecurity) / nWeakenSTR);
|
|
//ns.print("nThreads = " + nThreads);
|
|
|
|
|
|
ns.tail(ns.pid, oHome.hostname, sTarget);
|
|
//ns.resizeTail(815, 395);
|
|
//ns.moveTail(1925, 0);
|
|
|
|
let nWeakenPID;
|
|
|
|
if (nThreads > 0) {
|
|
const nDelay = ns.getWeakenTime(sTarget);
|
|
|
|
ns.print("current security is: " + nSecurity);
|
|
ns.print("minimum security is: " + nMinSecurity);
|
|
ns.print("threads needed for weaken: " + nThreads);
|
|
ns.print(nThreads + " will reduce Security by " + ns.weakenAnalyze(nThreads, nCores));
|
|
ns.print(nThreads + " of " + sWeakenScript + " requires " + (ns.getScriptRam(sWeakenScript, "home") * nThreads) + " GB of RAM");
|
|
ns.print("weakening will take " + (nDelay / 1000 / 60) + " minutes");
|
|
|
|
if ((ns.getServerMaxRam(oHome.hostname) - ns.getServerUsedRam(oHome.hostname)) >= (ns.getScriptRam(sWeakenScript, "home") * nThreads)) {
|
|
nWeakenPID = ns.run(sWeakenScript, nThreads, sTarget);
|
|
//ns.print("Waiting for PID = " + nWeakenPID);
|
|
await ns.nextPortWrite(nWeakenPID);
|
|
nSecurity = ns.getServerSecurityLevel(sTarget);
|
|
//ns.print("Breach complete, security level is now at: " + nSecurity);
|
|
}
|
|
else {
|
|
nThreads = Math.floor(((ns.getServerMaxRam("home") - ns.getServerUsedRam("home")) / ns.getScriptRam(sWeakenScript)));
|
|
nWeakenPID = ns.run(sWeakenScript, nThreads, sTarget);
|
|
//ns.print("Waiting for PID = " + nWeakenPID);
|
|
await ns.nextPortWrite(nWeakenPID);
|
|
nSecurity = ns.getServerSecurityLevel(sTarget);
|
|
//ns.print("Breach in progress, security level is now at: " + nSecurity);
|
|
}
|
|
}
|
|
//back to Lowrun
|
|
ns.spawn(sRunScript, { threads: 1, spawnDelay: 0 }, sTarget);
|
|
} |