Compare commits
2 Commits
eacf13bc53
...
bf6657e89f
| Author | SHA1 | Date | |
|---|---|---|---|
| bf6657e89f | |||
| 5a36aca138 |
@@ -260,6 +260,12 @@ export async function RunAndWait(ns, sScript, ...args) {
|
||||
while (ns.isRunning(sScript, ...args)) { await ns.sleep(100); }
|
||||
}
|
||||
|
||||
/** @param {NS} ns */
|
||||
export async function DistributeRunAndWait(ns, sScript, ...args) {
|
||||
if (!ns.isRunning(sScript, ...args)) { drun(ns, sScript, ...args); }
|
||||
while (ns.isRunning(sScript, ...args)) { await ns.sleep(100); }
|
||||
}
|
||||
|
||||
/** @param {NS} ns */
|
||||
export function listWorkServers(ns) {
|
||||
ns.disableLog("ALL");
|
||||
@@ -338,18 +344,36 @@ export function sortJsonArrayByKey(array, primaryKey, secondaryKey) {
|
||||
|
||||
|
||||
/** @param {NS} ns */
|
||||
export async function distributeScript(ns, sScript, nThreads, [...args]) {
|
||||
export async function drun(ns, ...args ){
|
||||
//ns.tail();
|
||||
ns.disableLog("ALL");
|
||||
ns.disableLog("scp");
|
||||
ns.print(args);
|
||||
let aArgs = args;
|
||||
const sScript = aArgs.shift();
|
||||
let nThreads = aArgs.shift();
|
||||
|
||||
if (nThreads === undefined) { nThreads = 1 };
|
||||
|
||||
ns.print(aArgs);
|
||||
|
||||
const aScriptFiles = ns.ls("home", ".js");
|
||||
const aTXTFiles = ns.ls("home", ".txt");
|
||||
|
||||
const sWeakenScript = "RMweaken.js";
|
||||
const sGrowScript = "RMgrow.js";
|
||||
const sListName = "serverList.txt";
|
||||
|
||||
if (!ns.fileExists(sListName, "home")) { ns.print(`ERROR ${sListName} does not exist.`); return false; };
|
||||
let sServerList = ns.read(sListName);
|
||||
let aSortedList = sortJsonArrayByKey(sServerList, "serverCores", "maxRam").reverse();
|
||||
let aSortedList;
|
||||
if (sScript === sWeakenScript || sScript === sGrowScript) {
|
||||
aSortedList = sortJsonArrayByKey(sServerList, "serverCores", "maxRam").reverse();
|
||||
} else {
|
||||
aSortedList = sortJsonArrayByKey(sServerList, "serverCores", "maxRam");
|
||||
}
|
||||
|
||||
ns.print(sScript);
|
||||
ns.print(nThreads);
|
||||
ns.print(...args);
|
||||
|
||||
const nScriptSize = ns.getScriptRam(sScript, "home");
|
||||
let nTotalSize = nScriptSize * nThreads;
|
||||
@@ -360,19 +384,40 @@ export async function distributeScript(ns, sScript, nThreads, [...args]) {
|
||||
aSortedList.forEach((entry) => {
|
||||
let sHost = entry.serverName;
|
||||
ns.print("sHost = " + sHost)
|
||||
|
||||
let nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName);
|
||||
if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nTotalSize) {
|
||||
ns.scp(sScript, sHost);
|
||||
ns.exec(sScript, sHost, nThreads, ...args);
|
||||
if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nTotalSize && entry.serverName !== "home") {
|
||||
ns.scp(aScriptFiles, sHost), "home";
|
||||
ns.scp(aTXTFiles, sHost), "home";
|
||||
ns.exec(sScript, sHost, nThreads, ...aArgs);
|
||||
nThreads = 0;
|
||||
nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName);
|
||||
}
|
||||
else if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nScriptSize && entry.serverName !== "home") {
|
||||
let nThreadsDist = Math.floor(nFreeRAM / nScriptSize);
|
||||
ns.scp(aScriptFiles, sHost), "home";
|
||||
ns.scp(aTXTFiles, sHost), "home";
|
||||
ns.print("room for : " + nThreadsDist + " scripts");
|
||||
ns.exec(sScript, sHost, nThreadsDist, ...aArgs);
|
||||
nThreads -= nThreadsDist;
|
||||
nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName);
|
||||
}
|
||||
else if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nTotalSize) {
|
||||
if (entry.serverName !== "home") {
|
||||
ns.scp(aScriptFiles, sHost), "home";
|
||||
ns.scp(aTXTFiles, sHost), "home";
|
||||
}
|
||||
ns.exec(sScript, sHost, nThreads, ...aArgs);
|
||||
nThreads = 0;
|
||||
nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName);
|
||||
}
|
||||
else if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nScriptSize) {
|
||||
let nThreadsDist = Math.floor(nFreeRAM / nScriptSize);
|
||||
ns.scp(sScript, sHost);
|
||||
if (entry.serverName !== "home") {
|
||||
ns.scp(aScriptFiles, sHost), "home";
|
||||
ns.scp(aTXTFiles, sHost), "home";
|
||||
}
|
||||
ns.print("room for : " + nThreadsDist + " scripts");
|
||||
ns.exec(sScript, sHost, nThreadsDist, ...args);
|
||||
ns.exec(sScript, sHost, nThreadsDist, ...aArgs);
|
||||
nThreads -= nThreadsDist;
|
||||
nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName);
|
||||
}
|
||||
|
||||
@@ -1,82 +1,6 @@
|
||||
import { sortJsonArrayByKey } from "Library.js";
|
||||
import { drun } from "./Library";
|
||||
|
||||
/** @param {NS} ns */
|
||||
export async function main(ns) {
|
||||
//ns.tail();
|
||||
ns.disableLog("scp");
|
||||
let aArgs = ns.args;
|
||||
const sScript = aArgs.shift();
|
||||
let nThreads = aArgs.shift();
|
||||
if (nThreads === undefined) { nThreads = 1 };
|
||||
|
||||
ns.print(aArgs);
|
||||
|
||||
const aScriptFiles = ns.ls("home", ".js");
|
||||
const aTXTFiles = ns.ls("home", ".txt");
|
||||
//ns.tprint(aScriptFiles);
|
||||
//ns.tprint(aTXTFiles);
|
||||
|
||||
const sWeakenScript = "RMweaken.js";
|
||||
const sGrowScript = "RMgrow.js";
|
||||
const sListName = "serverList.txt";
|
||||
|
||||
if (!ns.fileExists(sListName, "home")) { ns.print(`ERROR ${sListName} does not exist.`); return false; };
|
||||
let sServerList = ns.read(sListName);
|
||||
let aSortedList;
|
||||
if (sScript === sWeakenScript || sScript === sGrowScript) {
|
||||
aSortedList = sortJsonArrayByKey(sServerList, "serverCores", "maxRam").reverse();
|
||||
} else {
|
||||
aSortedList = sortJsonArrayByKey(sServerList, "serverCores", "maxRam");
|
||||
}
|
||||
|
||||
ns.print(sScript);
|
||||
ns.print(nThreads);
|
||||
|
||||
const nScriptSize = ns.getScriptRam(sScript, "home");
|
||||
let nTotalSize = nScriptSize * nThreads;
|
||||
|
||||
ns.print("nScriptSize = " + nScriptSize);
|
||||
ns.print("nTotalSize = " + nTotalSize);
|
||||
|
||||
aSortedList.forEach((entry) => {
|
||||
let sHost = entry.serverName;
|
||||
ns.print("sHost = " + sHost)
|
||||
let nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName);
|
||||
if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nTotalSize && entry.serverName !== "home") {
|
||||
ns.scp(aScriptFiles, sHost), "home";
|
||||
ns.scp(aTXTFiles, sHost), "home";
|
||||
ns.exec(sScript, sHost, nThreads, ...aArgs);
|
||||
nThreads = 0;
|
||||
nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName);
|
||||
}
|
||||
else if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nScriptSize && entry.serverName !== "home") {
|
||||
let nThreadsDist = Math.floor(nFreeRAM / nScriptSize);
|
||||
ns.scp(aScriptFiles, sHost), "home";
|
||||
ns.scp(aTXTFiles, sHost), "home";
|
||||
ns.print("room for : " + nThreadsDist + " scripts");
|
||||
ns.exec(sScript, sHost, nThreadsDist, ...aArgs);
|
||||
nThreads -= nThreadsDist;
|
||||
nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName);
|
||||
}
|
||||
else if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nTotalSize) {
|
||||
if (entry.serverName !== "home"){
|
||||
ns.scp(aScriptFiles, sHost), "home";
|
||||
ns.scp(aTXTFiles, sHost), "home";
|
||||
}
|
||||
ns.exec(sScript, sHost, nThreads, ...aArgs);
|
||||
nThreads = 0;
|
||||
nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName);
|
||||
}
|
||||
else if (nThreads >= 1 && entry.rootAccess && nFreeRAM >= nScriptSize) {
|
||||
let nThreadsDist = Math.floor(nFreeRAM / nScriptSize);
|
||||
if (entry.serverName !== "home"){
|
||||
ns.scp(aScriptFiles, sHost), "home";
|
||||
ns.scp(aTXTFiles, sHost), "home";
|
||||
}
|
||||
ns.print("room for : " + nThreadsDist + " scripts");
|
||||
ns.exec(sScript, sHost, nThreadsDist, ...aArgs);
|
||||
nThreads -= nThreadsDist;
|
||||
nFreeRAM = ns.getServerMaxRam(entry.serverName) - ns.getServerUsedRam(entry.serverName);
|
||||
}
|
||||
});
|
||||
await drun(ns, ...ns.args);
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import { RunAndWait } from "./Library";
|
||||
import { DistributeRunAndWait, drun, RunAndWait } from "./Library";
|
||||
|
||||
/** @param {NS} ns */
|
||||
export async function main(ns) {
|
||||
@@ -14,23 +14,18 @@ export async function main(ns) {
|
||||
const sServerListFile = "serverList.txt";
|
||||
const sBestServerFile = "bestTarget.txt";
|
||||
const sWorkerList = "WorkerList.js";
|
||||
const sCorpControl = "CorpControl.js";
|
||||
|
||||
await RunAndWait(ns, sServerListScript);
|
||||
/*
|
||||
const oServerList = JSON.parse(ns.read(sServerListFile));
|
||||
const oHome = oServerList["home"];
|
||||
const nHomeMaxRAM = oHome.maxRam;
|
||||
ns.print("nHomeMaxRAM = " + nHomeMaxRAM);
|
||||
*/
|
||||
if (!ns.isRunning(sWorkerList)) { ns.run(sWorkerList); }
|
||||
if (!ns.isRunning(sGangScript)) { drun(ns, sGangScript); }
|
||||
//if (!ns.isRunning(sCorpControl)) { ns.run(sCorpControl); }
|
||||
if (!ns.isRunning(sPServScript)) { drun(ns, sPServScript); }
|
||||
await DistributeRunAndWait(ns, sBackdoorScript);
|
||||
await DistributeRunAndWait(ns, sUpdateTarget);
|
||||
|
||||
let oServerlist = JSON.parse(ns.read(sServerListFile));
|
||||
let nHomeMaxRAM = oServerlist.find((entry) => entry.serverName === "home").maxRam;
|
||||
ns.print("nHomeMaxRAM = " + nHomeMaxRAM);
|
||||
|
||||
if (!ns.isRunning(sGangScript)) { ns.run(sGangScript); }
|
||||
if (!ns.isRunning(sPServScript)) { ns.run(sPServScript); }
|
||||
await RunAndWait(ns, sBackdoorScript);
|
||||
await RunAndWait(ns, sUpdateTarget);
|
||||
//await RunAndWait(ns, sBatchController);
|
||||
|
||||
if (nHomeMaxRAM >= 256) { if (!ns.isRunning(sMonitorScript)) { ns.run(sMonitorScript); } }
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import { distributeScript, getGrowThreads, getSetting, sortJsonArrayByKey } from "../Library";
|
||||
import { getGrowThreads, getSetting, sortJsonArrayByKey } from "../Library";
|
||||
|
||||
/** @param {NS} ns */
|
||||
export async function main(ns) {
|
||||
|
||||
Reference in New Issue
Block a user