Это должно сделать то, что вы sh, мы используем for .. of l oop для итерации хостов по порядку.
В библиотеке ping также есть оболочка обещаний, которая позволяет пропускать используя обратные вызовы.
Вы также можете использовать Promise.all для выполнения всех пингов и тестов одновременно, но я не верю, что это то, что вы будете sh делать.
I включили hostpingVer2, который использует Promise.all, если вы хотите выполнить все эхо-запросы одновременно.
const ping = require('ping');
const hosts = ['google.com', 'amazon.com', 'itdoesntexist'];
async function test() {
console.log('hosts: ', hosts)
const results = await hostping(hosts);
console.log('ping results: ', results);
}
async function hostping(hosts) {
const results = [];
for(let host of hosts) {
let probeResult = await ping.promise.probe(host);
results.push( { host, hoststatus: probeResult.alive ? 0: 1, alive: probeResult.alive } );
}
return results;
}
async function hostpingVer2(hosts) {
const probeResults = await Promise.all(hosts.map(host => ping.promise.probe(host)));
return probeResults.map(probeResult => {
return { host: probeResult.host, hoststatus: probeResult.alive ? 0: 1, alive: probeResult.alive }
});
}
test();