PDA

Показать полную графическую версию : JS Скрипт, получения TCP соединений (по типу netstat -a -n -p TCP), не работает.


andr_mozg
02-02-2015, 18:17
Скрипт следующий:


var WshShell = new ActiveXObject("WScript.Shell");
var oExec = WshShell.Exec('%comspec% /c netstat -a -n -p TCP');

function ReadAllFromAny(oExec)
{
if (!oExec.StdOut.AtEndOfStream)
return oExec.StdOut.Read(1);

return -1;
}

var allInput = "";
var tryCount = 0;
var c_est=0;
var c_tim=0;
var c_lis=0;


while (true)
{


var input = ReadAllFromAny(oExec);

if (-1 == input)
{
if (tryCount++ > 10 && oExec.Status == 1)
break;
WScript.Sleep(100);
}
else
{
allInput += input;


if (input=="\n")
{
WScript.Echo(allInput);
WScript.Echo("\n");

if (allInput.search("ESTABLISHED") >0 ) {
c_est+=1

} else if (allInput.search("TIME_WAIT") >0) {
c_tim+=1
} else if (allInput.search("LISTENING") >0) {
c_lis+=1

}


allInput=""

}
tryCount = 0;
}
}

WScript.Echo ("ESTABLISHED - " + c_est);
WScript.Echo ("TIME_WAIT - " + c_tim);
WScript.Echo ("LISTENING - " + c_lis);






На windows 7 все работает, на 2008 R2 уходит в безконечный цыкл сыпит пустыми окнами CMD.
А вторая беда в том что скрипт должен запускать софт, а он работает на движке Rhino, и возможно с этим связано что он в упор не видит ActiveXObject

Как можно обойти эти проблемы?

P.S. Идеальным было бы получить через запрос WMI, но я немогу найти решения. Вроде как было что то но в Windows XP. Это действительно так и метода нет?

Спасибо




© OSzone.net 2001-2012