Нет, там ситуация такая: маленькая фирма - 7 компов в рабочей группе + 1 роутер + 1 сетевой принтер - это всё то, что имеет ip-адреса. Поскольку сама сетевая структура (провода, патч-корды) валяется буквально под ногами, то они (сотрудники) естественно всё это так или иначе "дёргают" и контакты отваливаются... Потом, собаки, звонят ко мне приезжай мол у нас принтер не работает... а дело в том, что сетевой кабель от компа отвалился. Приводить в порядок СКС они не хотят, денег за это не платят, а это монтаж надо новый делать. Я у них 1 день работаю в неделю, так вот хотел написать такой скрипт, который можно было бы запустить с любой рабочей станции, и по его отработке видеть какие узлы она (станция) видит, а какие нет и потом уж соответствующие провода дёргать... Вот как-то так... Тему начал эту потому что сразу хотел отсечь проверку того Ip, с которого запускается скрипт, но понял, что анализ по IP, это геморрой! Поэтому написал по другому, отталкиваясь не от IP адресов а от NetBIOS имён ПК. Думаю всё будет работать.
Вот такой код:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var wshshell = WScript.CreateObject("WScript.Shell");
var netObj = new ActiveXObject("WScript.Network");
var rezult = "C:\\live_IP.txt"; // путь к файлу результата
var ipArray = ["192.168.1.205", "192.168.1.200", "89.106.192.3", "192.168.1.248", "192.168.1.10", "172.18.0.4"];
// массив ip-адресов
var ipHosts = ["Inet", "Main", "Internet-HOST", "NhmS241", "Printer-Buh", "NAUGAD"];
// массив имён
var compName = netObj.ComputerName;
for(i=0; i<ipHosts.length; i++)
{
if(compName.toLowerCase() == ipHosts[i].toLowerCase())
{
ipHosts.splice(i, 1), ipArray.splice(i, 1);
}
}
if(fso.FileExists(rezult) == true)
{
fso.DeleteFile(rezult, true);
}
for(f=0; f<ipArray.length; f++)
{
var name = ipArray[f];
Aviable(name);
}
wshshell.run('notepad.exe ' + rezult, 1, true);
function Aviable(name)
{
var objClass = GetObject("winmgmts://.\\Root\\CIMV2:Win32_PingStatus.address=\"" + name + "\"");
if(objClass.StatusCode == 0)
{
var txtfl = fso.OpenTextFile(rezult, 8, true);
txtfl.WriteLine("Сетевой хост с IP = " + name + " и именем " + ipHosts[f] + " ДОСТУПЕН");
txtfl.WriteLine("----------------------------------------------------");
txtfl.WriteBlankLines(1);
txtfl.close();
}
else
{
var txtfl = fso.OpenTextFile(rezult, 8, true);
txtfl.WriteLine("Сетевой хост с IP = " + name + " и именем " + ipHosts[f] + " НЕ ДОСТУПЕН");
txtfl.WriteLine("----------------------------------------------------");
txtfl.WriteBlankLines(1);
txtfl.close();
}
}
Ip - адреса - статика, имена так же никто не меняет, немного доработаю, чтобы 1-м пинговал роутер и в случае неудачи, сообщал, что надо проверить подключение своего ПК, хотя можно и так, ка щас...
Ну вот пожалуй и всё, растолкую как и что, думаю меня это от лишних поездок избавит.