IPB

Здравствуйте, гость ( Вход | Регистрация )

> Снятие статистики с интерфейса
LInfo
сообщение Aug 8 2006, 09:55
Сообщение #1


Супер постер
*****

Группа: Posters
Сообщений: 575
Регистрация: 17.11.2005
Из: AfaNet
Пользователь №: 132



Какой программой/драйвером можно снимать статистику с сетевых интерфейсов в реальном времени под Windows 5.хи желательно с занесением по нужному шаблону в БД MySQL, или хотя бы подсказать куда копать?


--------------------
"неправильная" подпись может быть находкой для шпионов

город: Город Афанет (траф)
Yandex.Деньги 4100151149425

#КартинкА#
Вернуться к началу страницы
 
+Цитировать сообщение
 
Создать новую тему
Ответов (1 - 11)
pavel
сообщение Aug 8 2006, 12:07
Сообщение #2


Пользователь
**

Группа: Posters
Сообщений: 116
Регистрация: 22.5.2006
Из: Чебоксары
Пользователь №: 616



Может как-то так unsure.gif ?

strComputerName = "." ' Для локальной машины

Set objSWbemServices = GetObject("winmgmts:\\" & strComputerName & "\root\cimv2")

Set colRawData = objSWbemServices.ExecQuery("select * from Win32_PerfRawData_Tcpip_NetworkInterface")
Set colCookedData = objSWbemServices.ExecQuery("select * from Win32_PerfFormattedData_Tcpip_NetworkInterface")

Const doBother = 13
For i = 1 To doBother

For Each objRawData In colRawData
objRawData.Refresh_

WScript.Echo "-- Необработанные данные as is " & String(80, "-")
WScript.Echo objRawData.Name & ":" & CDate(objRawData.Timestamp_PerfTime)
WScript.Echo "BytesReceivedPerSec: " & objRawData.BytesReceivedPerSec
WScript.Echo "BytesSentPerSec: " & objRawData.BytesSentPerSec
WScript.Echo "BytesTotalPerSec : " & objRawData.BytesTotalPerSec

WScript.Echo vbCRLF & "Все свойства: "
For Each objClassProperty In objRawData.Properties_
WScript.Echo String(5, " ") & objClassProperty.Name & ": " & objClassProperty.Value
Next

Next

For Each objCookedData In colCookedData
objCookedData.Refresh_

WScript.Echo "-- Обработанные данные (как в системном мониторе) " & String(80, "-")
WScript.Echo objCookedData.Name & ":"
WScript.Echo "BytesReceivedPerSec: " & objCookedData.BytesReceivedPerSec
WScript.Echo "BytesSentPerSec: " & objCookedData.BytesSentPerSec
WScript.Echo "BytesTotalPerSec : " & objCookedData.BytesTotalPerSec

WScript.Echo vbCRLF & "Все свойства: "
For Each objClassProperty In objCookedData.Properties_
WScript.Echo String(5, " ") & objClassProperty.Name & ": " & objClassProperty.Value
Next

Next

WScript.Echo String(80, "-")

WScript.Sleep 1000

Next

у меня "cooked" данные нашлись только под Win2003...
кстати запускать лучше так smile.gif :
CScript "имя скрипта.vbs" > "имя файла.txt"


Дает смотреть кстати только тем юзерам, кто имеет на это право, ибо WMI cool.gif


Кстати, токо что написал прогу, которая по WMI дает админам смотреть у кого-чего на диске (компы одном в домене) и пошареварить что надо (без лишнего гемороя и втихаря) ninja.gif
зачем я это сделал... пойду стеру
Вернуться к началу страницы
 
+Цитировать сообщение
LInfo
сообщение Aug 8 2006, 12:10
Сообщение #3


Супер постер
*****

Группа: Posters
Сообщений: 575
Регистрация: 17.11.2005
Из: AfaNet
Пользователь №: 132



мне как раз под вин2003 нужно

а сбрасывать может только в файл?

хотя конечно можно потом сделать 1раз в сутки перенос данных файла в БД, через планировщик задач


--------------------
"неправильная" подпись может быть находкой для шпионов

город: Город Афанет (траф)
Yandex.Деньги 4100151149425

#КартинкА#
Вернуться к началу страницы
 
+Цитировать сообщение
pavel
сообщение Aug 8 2006, 12:19
Сообщение #4


Пользователь
**

Группа: Posters
Сообщений: 116
Регистрация: 22.5.2006
Из: Чебоксары
Пользователь №: 616



ohmy.gif
А сбрасывать будет куда напишешь!!!
А куда надо?


А если в MySQL, то можешь ли поставить евоный ODBC, а то не через ADO гемор будет.... А хотя можно еще заюзать perl- или php-скрипт, оформленный как компонент wsc...
(под рукой сейчас только ничего такого нет... blush.gif )
Вернуться к началу страницы
 
+Цитировать сообщение
LInfo
сообщение Aug 8 2006, 12:25
Сообщение #5


Супер постер
*****

Группа: Posters
Сообщений: 575
Регистрация: 17.11.2005
Из: AfaNet
Пользователь №: 132



Цитата(pavel @ Aug 8 2006, 13:19) *
ohmy.gif
А сбрасывать будет куда напишешь!!!
А куда надо?
А если в MySQL, то можешь ли поставить евоный ODBC, а то не через ADO гемор будет.... А хотя можно еще заюзать perl- или php-скрипт, оформленный как компонент wsc...
(под рукой сейчас только ничего такого нет... blush.gif )


а как через ОДБС отправить инфу, т.к. поставить драйвер для мускула поставить лягко smile.gif


--------------------
"неправильная" подпись может быть находкой для шпионов

город: Город Афанет (траф)
Yandex.Деньги 4100151149425

#КартинкА#
Вернуться к началу страницы
 
+Цитировать сообщение
pavel
сообщение Aug 8 2006, 12:42
Сообщение #6


Пользователь
**

Группа: Posters
Сообщений: 116
Регистрация: 22.5.2006
Из: Чебоксары
Пользователь №: 616



надо зайти Администрирование->Источники данных (ODBC) и сделать Системный DSN для нужной базы MySQL, а дальше примерно так (самый простой безнаворотный вариант):

Set adoCn = CreateObject("ADODB.Connection")
adoCn.Open "имя_созданного_системного_DSN"

' Выполняем нужные команды SQL
adoCn.Execute "insert into MyTable(Field1, Field2) values (" & iField1 & ", '" & strField2 & "')"

adoCn.Close
Set adoCn = Nothing


раз уш пошел разговор, то открывать соединение можно только в начале программы, а закрывать только в конце... blush.gif
Вернуться к началу страницы
 
+Цитировать сообщение
GerVin
сообщение Aug 8 2006, 14:26
Сообщение #7


Настоящий ADSL'щик
****

Группа: Posters
Сообщений: 462
Регистрация: 8.10.2005
Пользователь №: 97



Цитата(pavel @ Aug 8 2006, 13:07) *
Кстати, токо что написал прогу, которая по WMI дает админам смотреть у кого-чего на диске (компы одном в домене) и пошареварить что надо (без лишнего гемороя и втихаря) ninja.gif
зачем я это сделал... пойду стеру

Ух Паша разошелся smile.gif


--------------------
We do what we must because we can
Вернуться к началу страницы
 
+Цитировать сообщение
LInfo
сообщение Aug 8 2006, 14:58
Сообщение #8


Супер постер
*****

Группа: Posters
Сообщений: 575
Регистрация: 17.11.2005
Из: AfaNet
Пользователь №: 132



Код
strComputerName = "." ' Для локальной машины

Set objSWbemServices = GetObject("winmgmts:\\" & strComputerName & "\root\cimv2")

Set colRawData = objSWbemServices.ExecQuery("select * from Win32_PerfRawData_Tcpip_NetworkInterface")
Set colCookedData = objSWbemServices.ExecQuery("select * from Win32_PerfFormattedData_Tcpip_NetworkInterface")

Const doBother = 13
For i = 1 To doBother
    For Each objRawData In colRawData
        objRawData.Refresh_
        
        WScript.Echo "-- Необработанные данные as is " & String(80, "-")
        WScript.Echo objRawData.Name & ":" & CDate(objRawData.Timestamp_PerfTime)
        WScript.Echo "BytesReceivedPerSec: " & objRawData.BytesReceivedPerSec
        WScript.Echo "BytesSentPerSec: " & objRawData.BytesSentPerSec
        WScript.Echo "BytesTotalPerSec : " & objRawData.BytesTotalPerSec
        
        WScript.Echo vbCRLF & "Все свойства: "
        For Each objClassProperty In objRawData.Properties_
            WScript.Echo String(5, " ") & objClassProperty.Name & ": " & objClassProperty.Value
        Next    
    Next
    
    For Each objCookedData In colCookedData
        objCookedData.Refresh_

        WScript.Echo "-- Обработанные данные (как в системном мониторе) " & String(80, "-")
        WScript.Echo objCookedData.Name & ":"
        WScript.Echo "BytesReceivedPerSec: " & objCookedData.BytesReceivedPerSec
        WScript.Echo "BytesSentPerSec: " & objCookedData.BytesSentPerSec
        WScript.Echo "BytesTotalPerSec : " & objCookedData.BytesTotalPerSec

        WScript.Echo vbCRLF & "Все свойства: "
        For Each objClassProperty In objCookedData.Properties_
            WScript.Echo String(5, " ") & objClassProperty.Name & ": " & objClassProperty.Value
        Next
    Next

    WScript.Echo String(80, "-")

    WScript.Sleep 1000

Next


несколько вопросов по скрипту. Почему 13 проходов он делает? причем с периодом в 1 секунду

и еще такое: у меня есть 4 интерфейса, мне нужно выцеплять только с 2х, а не со всех. где прописать это?
или же мне нужно выцеплять ИПишники и в зависимости от ИП-адреса обрабатывать по разному


--------------------
"неправильная" подпись может быть находкой для шпионов

город: Город Афанет (траф)
Yandex.Деньги 4100151149425

#КартинкА#
Вернуться к началу страницы
 
+Цитировать сообщение
pavel
сообщение Aug 8 2006, 16:03
Сообщение #9


Пользователь
**

Группа: Posters
Сообщений: 116
Регистрация: 22.5.2006
Из: Чебоксары
Пользователь №: 616



Про 13 раз я ничего не скажу smile.gif

Запрос можно изменить - это обычный SQL (хотя если быть совсем точным, то WQL). Например, так:
select * from Win32_PerfRawData_Tcpip_NetworkInterface where Name like '%SiS%'
или (если с извратом)
select * from Win32_PerfRawData_Tcpip_NetworkInterface where CurrentBandwidth = 100000000

Отбирать можно по-любому полю, а какие поля есть - предыдущий скрипт выдавал

Про ИП не совсем понял... в принципе возможно конечно все, просто так можно слишком далеко зайти... Если тебе нужно просто считать все пакеты данных без привязок к сетевым интерфейсом, то нужно просто заменить им класса Win32_PerfRawData_Tcpip_NetworkInterface на Win32_PerfRawData_Tcpip_IP
(у него нет свойств BytesReceivedPerSec, BytesSentPerSec, BytesTotalPerSec, так что их вывод из скрипта лучше удалить, тем более что там все равно ВСЕ свойства показываются)

Может меня с самого начала не в ту степь понесло? Там кстати можно было в Управлении компом -> Журналы и оповещения производительности -> Журналы счетчиков можно было добавить новый журнал и добавить в него новые счетчики для объектов типа "Сетевой интерфейс" или "IP" (там кстати все свойства приведены на русском и с объяснением). Теоретически там можно настроить и вывод журнала как в файл, так и в БД SQL (у меня не в файл че-то не получилось). Но этот вариант мне не очень нравиться - ибо проблемы с реюзабильностью и переносимостью, к тому же там нельзя управлять частотой пинга параметров и форматом журнала...
Вернуться к началу страницы
 
+Цитировать сообщение
pavel
сообщение Aug 8 2006, 17:38
Сообщение #10


Пользователь
**

Группа: Posters
Сообщений: 116
Регистрация: 22.5.2006
Из: Чебоксары
Пользователь №: 616



Хотя ладно скажу
Цитата
For i = 1 To doBother

значит "пока не надоест"
Вернуться к началу страницы
 
+Цитировать сообщение
LInfo
сообщение Aug 8 2006, 21:50
Сообщение #11


Супер постер
*****

Группа: Posters
Сообщений: 575
Регистрация: 17.11.2005
Из: AfaNet
Пользователь №: 132



но у тебя же
Код
Const doBother = 13
For i = 1 To doBother
.....
Next


т.е. doBother это константа равная 13, а внутри цила ты вроде не переназначаешь

или я не так понимаю?


--------------------
"неправильная" подпись может быть находкой для шпионов

город: Город Афанет (траф)
Yandex.Деньги 4100151149425

#КартинкА#
Вернуться к началу страницы
 
+Цитировать сообщение
pavel
сообщение Aug 8 2006, 22:46
Сообщение #12


Пользователь
**

Группа: Posters
Сообщений: 116
Регистрация: 22.5.2006
Из: Чебоксары
Пользователь №: 616



Цитата(LInfo @ Aug 8 2006, 22:50) *
или я не так понимаю?


да лана те, не смешно уже... и ежикам понятно, что это по-английски

посмотри в словаре слова bother и do
Вернуться к началу страницы
 
+Цитировать сообщение

ОтветитьСоздать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 28th April 2024 - 22:54