Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Сбор статистики

Ответить
Настройки темы
CMD/BAT - [решено] Сбор статистики

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день!

Второй день бьюсь над простеньким скриптом и никак не могу побороть, решил обратить за помощью к умным людям.

И так суть такова:

Есть сетевой запрос по Snmp на определённый список адресов сетевых принтеров, который показывает счётчик страниц. Нужно в текстовый файл записать значения вида ip address=счётчик страниц!

запрос вида

Код: Выделить весь код
Snmpget.exe -r:192.168.1.1 -o:.1.3.6.1.2.1.43.10.2.1.4.1.1
Выдаёт

Код: Выделить весь код
SnmpGet v1.01 - Copyright (C) 2009 SnmpSoft Company
[ More useful network tools on http://www.snmpsoft.com ]

OID=.1.3.6.1.2.1.43.10.2.1.4.1.1
Type=Counter32
Value=237326
Все мои попытки привели к такому варианту, но записывает одни и те же значения в файл(((

Код: Выделить весь код
del Counter.txt

for /F "EOL=; TOKENS=*" %%i in (ip_printers.txt) do (D:\SNMPWalk\Snmpget.exe -r:%%i -o:.1.3.6.1.2.1.43.10.2.1.4.1.1 > r.txt

    for /f "usebackq tokens=*" %%a in ("r.txt") do (set %%a)

echo %%i=%Value% >> Counter.txt
    
)
Сильно не пинайте, я с этим делом впервые сталкиваюсь(

Отправлено: 12:15, 24-12-2014

 

Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Foreigner,
Спасибо. Работает.


Подскажите еще как можно реализовать опрос не по одному а нескольким значениям OID ? И результат дописывать в ту же строку?

Т.е. в итоговом файле counter.txt в одну строку через точку с запятой должны быть указаны:

IP (переменная %1 в подпрограмме :1); значение %value% от выполнения команды Snmpget.exe -r:%1 -o:.1.3.6.1.2.1.43.10.2.1.4.1.1 ; и тоже значение %value% но с другим -o

Все что приходит в голову - это по очереди выполнять запросы с разными OID. как вписать результаты в одну строку?

Отправлено: 14:41, 25-12-2014 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


STLK, Если верно понял:
Код: Выделить весь код
@echo off
setlocal

for /f %%i in (ip_printers.txt) do call:1 %%i
goto:eof

:1
for %%i in (.1.3.6.1.2.1.43.10.2.1.4.1.1 .1.3.6.1.2.1.43.10.2.1.4.1.2) do (

    for /f "skip=3" %%j in (' Snmpget.exe -r:%1 -o:%%i ') do 1>nul set "%%i_%%j"

)

1>>counter.txt echo %1;%.1.3.6.1.2.1.43.10.2.1.4.1.1_value%;%.1.3.6.1.2.1.43.10.2.1.4.1.2_value%

Отправлено: 15:58, 25-12-2014 | #12


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Foreigner:
Iska, Подозреваю, что она бесполезна без принтера »
Верно подозреваете. Но для отладки подойдёт, как я подозреваю [теперь уже я ], любое устройство, например, приличный сервер, роутер, управляемый switch и т.п. С принтером я вчера вечером опробовать успел.

P.S. Я бы всё ж таки с «-q» попробовал, для простоты.

Отправлено: 18:24, 25-12-2014 | #13


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Тут возник один момент. Если IP доступен, то значение %value% прописывается в итоговый отчет без проблем.

Но, если связи нет, то вместо значения будет ошибка %Failed to get value of SNMP variable. Timeout.
В этом случае скрипт оставляет строку пустой. И если этот IP не первый в списке, запишет в итоговый отчет значение %value% от предидущего IP.

Отправлено: 17:21, 26-12-2014 | #14


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


STLK, Пропинговать?
Код: Выделить весь код
....
:1
1>nul ping -n 1 %1 || ( 1>>counter.txt echo IP: %1 not available at %date% %time:~0,-3% & goto:eof )
....
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:47, 26-12-2014 | #15


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Foreigner, Супер!
Собрал в один скрипт. Все работает!

По каждому IP выводит в отчет два параметра через ; или Timeout если нет ответа


Вот только вариант с проверкой пингом боюсь в моей ситуации не подойдет.
канал связи настолько не стабилен, что за время пока выполняется команда, может отвалиться соединение.

Т.е. пинг отработал а snmpget уже нет =(

Заметил это прогнав скрипт на большом списке IPшников, через удаленное соединение.


Как сделать проверку- есть ли в %value% текст ошибки (%Failed to get value of SNMP variable. Timeout.) и повторно запускать цикл опроса. Так подряд 2-3 раза, и если все равно Timeout - писать в отчет что "не получилось" и тогда уже переходить к следующему IP ?

Отправлено: 18:49, 29-12-2014 | #16


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата STLK:
Вот только вариант с проверкой пингом боюсь в моей ситуации не подойдет.
канал связи настолько не стабилен, что за время пока выполняется команда, может отвалиться соединение.
Т.е. пинг отработал а snmpget уже нет =( »
Фильтруйте вывод по ключевым словам.

Цитата STLK:
Так подряд 2-3 раза, »
Два или три ?
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:19, 29-12-2014 | #17


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Iska, Согласен, плюс лучше проверять пинг через поиск "TTL"
Код: Выделить весь код
 
ping 192.168.0.1 -n 3 | 1>nul findstr "TTL=" || echo ERROR!!!
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:54, 29-12-2014 | #18


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Foreigner:
плюс лучше проверять пинг через поиск "TTL" »
Я нет-нет, да забываю об этом .

Отправлено: 03:25, 30-12-2014 | #19


Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


Foreigner, Добрый день! Ваш скрипт служил мне верой и правдой долгое время, собирал счетчики, хост нэймы, но появилась необходимость собрать mac-адреса. При записи в скрипт OID mac-адреса принтера случается проблема.

Mac адрес выглядит так 18:a9:05:fd:53:56

скрипт записывает в файл:

Режим вывода команд на экран (ECHO) отключен.

а в окне пишет

Код: Выделить весь код
переменная среды .1.3.6.1.4.1.11.2.4.3.1.23.0 _%Failed не определена
Текст скрипта привожу ниже

Код: Выделить весь код
@echo off
setlocal

for /f %%i in (ip_printers.txt) do call:1 %%i
goto:eof

:1
1>nul ping -n 4 %1 || ( 1>>mac.txt echo ND )


:1
for %%i in (.1.3.6.1.4.1.11.2.4.3.1.23.0) do (

    for /f "skip=3" %%j in (' Snmpget.exe -r:%1 -o:%%i ') do 1>nul set "%%i_%%j"

)

1>>mac.txt echo %.1.3.6.1.4.1.11.2.4.3.1.23.0_value%

Отправлено: 15:40, 17-06-2016 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Сбор статистики

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2008 - [решено] Сбор статистики подключений пользователей через штатный VPN Vanger69 Windows Server 2008/2008 R2 6 09-07-2014 13:57
Прочие - [решено] Сбор сетевой статистики для процесса User001 Программное обеспечение Windows 3 12-02-2014 20:45
2008 R2 - [решено] Сбор сетевой статистики для процесса User001 Windows Server 2008/2008 R2 6 04-02-2014 13:56
Прочие - Сбор статистики использования ПО в сети Pit_bul Программное обеспечение Windows 1 04-04-2012 17:35
Интернет - Как предотвратить сбор статистики о системе при посещении веб-страниц? mnbv Хочу все знать 7 11-12-2009 17:52




 
Переход