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. Это действительно так и метода нет?
Спасибо
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. Это действительно так и метода нет?
Спасибо