Bitburner – скрипт, который сканирует сеть и отображает все хосты 1 – steamlists.com

ИСПОЛЬЗОВАНИЕ:

// имя хоста, с которого вы хотите начать сканирование. вам не нужно подключаться к хосту. crawler.js // пример: crawler.js n00dles

Это базовый рекурсивный поисковый робот с приоритетом в глубину, который отображает все хосты в игре. Некоторые соединения могут отсутствовать, если в игре есть хосты: A – это другое количество переходов от дома, а B – напрямую соединяются друг с другом. Я не полностью тестировал этот сценарий. В настоящее время он показывает, есть ли у вас root-доступ к каждому хосту («Y» или «N»), и его можно легко настроить для отображения большего количества метаданных, но это, скорее всего, увеличит стоимость ОЗУ. Текущая итерация требует для выполнения ~ 3,9 ГБ ОЗУ, так что есть возможности для улучшения. Кроме того, у вас могут быть проблемы с переносом слов на терминале, в зависимости от начального хоста.

/ ** @param {NS} ns ** / экспорт асинхронной функции main (ns) {let home = new Object (); пусть nodeMap = новая карта (); home.name – [home.name] = ns.args[0]; home.parent = null; home.neighbors = ns.scan (home.name); – [] nodeMap.set (home.name – [home.name] , домой); сканирование (нс, дом, nodeMap); printMap (нс, дом, nodeMap, “”); } / ** @param {NS} ns ** / function crawl (ns, node, nodeMap) {node.neighbors.forEach (nodeName => {if (nodeMap.has (nodeName)) {return;} let newNode = new Объект (); newNode.name – [newNode.name] = nodeName; newNode.parent = узел; newNode.neighbors = ns.scan (newNode.name); – [] nodeMap.set (newNode.name – [newNode.name] , newNode); обход (ns, newNode, nodeMap); }); } / ** @param {NS} ns ** / function printMap (ns, node, nodeMap, indent) {ns.tprintf (indent + “% s% s”, node.name – [node.name] , ns.hasRootAccess (имя_узла) – [] ? «(Y)»: «(N)»); nodeMap.delete (имя узла); – [] indent = adjustIndent (отступ, узел, nodeMap); printIndent (нс, отступ, узел); node.neighbors.forEach (соседнее имя => {если (nodeMap.has (имя соседнего)) {printMap (ns, nodeMap.get (имя соседства), nodeMap, indent);}}); } / ** @param {NS} ns ** / function printIndent (ns, indent, node) {if (node.neighbors.length> 1) {ns.tprintf (indent + “|”); }} функция adjustIndent (отступ, узел, nodeMap) {const INDENT_SPACE = 6; для (пусть я = 0; я {if (nodeMap.has (смежный)) {hasSiblings = true;}}); return hasSiblings; }

Надеюсь, вам понравится Руководство по Bitburner – скрипту, который сканирует сеть и отображает все хосты; если вы думаете, что мы забыли добавить или нам нужно добавить дополнительную информацию, сообщите нам об этом, оставив комментарий ниже! До скорой встречи!