Как на CW10 работать с SNMP ? (или вообще с сетью)
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Как на CW10 работать с SNMP ? (или вообще с сетью)
Коллеги!
сейчас встала задача быстро написать виндовое приложение работающее с железками по SNMP
тк я давно не "кларионил" (в начале 90х много писал на Кларионе 2.1; потом немного писал на CW5/6) то определенно не в курсе новинок, а время поджимает.
подскажите куда копать/где что читать ?
сейчас встала задача быстро написать виндовое приложение работающее с железками по SNMP
тк я давно не "кларионил" (в начале 90х много писал на Кларионе 2.1; потом немного писал на CW5/6) то определенно не в курсе новинок, а время поджимает.
подскажите куда копать/где что читать ?
- Admin
- Администратор
- Сообщения: 3959
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 25 раз
- Поблагодарили: 22 раза
- Контактная информация:
Как на CW10 работать с SNMP ? (или вообще с сетью)
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Как на CW10 работать с SNMP ? (или вообще с сетью)
спасибо!
совсем забыл - поддержка winapi еще же в 2.0 появилась
остается вспомнить как это делать
совсем забыл - поддержка winapi еще же в 2.0 появилась
остается вспомнить как это делать
-
- Бывалый
- Сообщения: 61
- Зарегистрирован: 12 Декабрь 2008, 12:09
- Откуда: Верхний Уфалей
- Контактная информация:
Как на CW10 работать с SNMP ? (или вообще с сетью)
Во вложении шаблон с сырцами.
Писал для себя комментариев там нет.
Чистого примера использования у меня нет а с приложениями в купе еще куча шаблонов.
Если поможет, могу какую нидь вырезку из сырцов показать.
Писал для себя комментариев там нет.
Чистого примера использования у меня нет а с приложениями в купе еще куча шаблонов.
Если поможет, могу какую нидь вырезку из сырцов показать.
- Вложения
-
- snmp.zip
- (8.86 КБ) 149 скачиваний
Как на CW10 работать с SNMP ? (или вообще с сетью)
Круто! огромное спасибо! буду разбиратьсяvd-vuf писал(а):Во вложении шаблон с сырцами.
Писал для себя комментариев там нет.
Чистого примера использования у меня нет а с приложениями в купе еще куча шаблонов.
Если поможет, могу какую нидь вырезку из сырцов показать.
- Admin
- Администратор
- Сообщения: 3959
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 25 раз
- Поблагодарили: 22 раза
- Контактная информация:
Как на CW10 работать с SNMP ? (или вообще с сетью)
Сюда же, почитать http://www.k-max.name/linux/snmp-protocol/SuperMax писал(а):Круто! огромное спасибо! буду разбираться
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
-
- Бывалый
- Сообщения: 61
- Зарегистрирован: 12 Декабрь 2008, 12:09
- Откуда: Верхний Уфалей
- Контактная информация:
Как на CW10 работать с SNMP ? (или вообще с сетью)
Нашел более менее прозрачный код.
Что бы не сбить с толку, код здесь как есть, только кое где добавил комментарии
Что бы не сбить с толку, код здесь как есть, только кое где добавил комментарии
Код: Выделить всё
ReqSNMPSystem PROCEDURE (STRING IP, LONG SWID, LONG MODID, STRING Comm) ! Declare Procedure
Window WINDOW('WGetSNMP'),AT(,,131,60),FONT('MS Sans Serif',8,,FONT:regular),IMM,SYSTEM,GRAY,DOUBLE,MDI
BUTTON('&OK'),AT(53,43,35,14),USE(?OkButton),LEFT,DEFAULT
END
SNMPRequestOids SNMPRequestOidsType ! Рабочая Очередь, использую для однотипности кода,
! конкретно здесь она заполняется из объявленных переменных
MIBsysDescr STRING('.1.3.6.1.2.1.1.1')
MIBsysUpTime STRING('.1.3.6.1.2.1.1.3')
MIBsysContact STRING('.1.3.6.1.2.1.1.4')
MIBsysName STRING('.1.3.6.1.2.1.1.5')
MIBsysLocation STRING('.1.3.6.1.2.1.1.6')
LocResults QUEUE ! Очередь для обмена инфой с классом GetSNMPClass
Id_Descr LONG
ResultQueue &SNMPResultQueueType
END
SNMP GetSNMPClass ! Объявляем класс
SWI_ID LONG
Loc:Count LONG
LocIdx LONG
FilesOpened BYTE(0)
CODE
OPEN(Window)
DISPLAY
DO OpenFiles
!Заполняем рабочую очередь
FREE(SNMPRequestOids)
SNMPRequestOids.Id = 1
SNMPRequestOids.Cnv = 1
SNMPRequestOids.NameOID = 'sysDescr'
SNMPRequestOids.Oid = MIBsysDescr
ADD(SNMPRequestOids)
SNMPRequestOids.Id = 2
SNMPRequestOids.Cnv = 1
SNMPRequestOids.NameOID = 'sysName'
SNMPRequestOids.Oid = MIBsysName
ADD(SNMPRequestOids)
SNMPRequestOids.Id = 3
SNMPRequestOids.Cnv = 1
SNMPRequestOids.NameOID = 'sysContact'
SNMPRequestOids.Oid = MIBsysContact
ADD(SNMPRequestOids)
SNMPRequestOids.Id = 4
SNMPRequestOids.Cnv = 1
SNMPRequestOids.NameOID = 'sysLocation'
SNMPRequestOids.Oid = MIBsysLocation
ADD(SNMPRequestOids)
SNMPRequestOids.Id = 5
SNMPRequestOids.Cnv = 5
SNMPRequestOids.NameOID = 'sysUpTime'
SNMPRequestOids.Oid = MIBsysUpTime
ADD(SNMPRequestOids)
SWI_ID = SWID
ACCEPT
CASE EVENT()
OF EVENT:OpenWindow
SNMP.Init(IP,comm) ! Инициализация класса, подаем ему IP адрес и Community, обычно оно = 'public'
! Заполняем очередь для обмена с SNMP, хранения полученного результата и походу запрашиваем инфу с SNMP
LOOP Loc:Count = 1 TO RECORDS(SNMPRequestOids)
GET(SNMPRequestOids,Loc:Count)
LocResults.Id_Descr = SNMPRequestOids.Id
LocResults.ResultQueue &= NEW(SNMPResultQueueType)
ADD(LocResults)
SNMP.Run(SNMPRequestOids.Cnv, SNMPRequestOids.NameOID, SNMPRequestOids.Oid, LocResults.ResultQueue)
END
SNMP.Kill ! прощаемся с классом
BREAK
END
END
FREE(SNMPRequestOids)
! Здесь у меня полученный результат записывается в таблицу и в лог файл, и по ходу очищается очередь
SWI:ID = SWI_ID
GET(Switch,SWI:BY_ID)
IF NOT ERRORCODE()
CLEAR(SWI:SystemInfo)
LOOP i# = 1 TO RECORDS(LocResults)
LocResults.Id_Descr = i#
GET(LocResults,LocResults.Id_Descr)
IF NOT ERRORCODE()
LOOP LocIdx = 1 TO RECORDS(LocResults.ResultQueue)
GET(LocResults.ResultQueue,1)
IF NOT(LocResults.ResultQueue.Value &= NULL)
IF i# = 5
SWI:SystemUpTime = '||' & LocResults.ResultQueue.Value
SaveLog('RS', IP & ' ' & SWI:SystemUpTime)
DISPOSE(LocResults.ResultQueue.Value)
ELSE
SWI:SystemInfo = CLIP(SWI:SystemInfo) & '||' & LocResults.ResultQueue.Value
SaveLog('RS', IP & ' ' & SWI:SystemInfo)
DISPOSE(LocResults.ResultQueue.Value)
END
END
IF NOT(LocResults.ResultQueue.Oid &= NULL)
DISPOSE(LocResults.ResultQueue.Oid)
END
DELETE(LocResults.ResultQueue)
END
FREE(LocResults.ResultQueue)
DISPOSE(LocResults.ResultQueue)
DELETE(LocResults)
END
END
PUT(Switch)
IF ERRORCODE()
SaveLog('RS', IP & ' ERROR ' & ERROR())
END
SaveLog('RS', IP & ' --- ' & SWI:SystemInfo)
PUT(Switch)
END
DO CloseFiles
CLOSE(Window)
!--------------------------------------
OpenFiles ROUTINE
Access:Switch.Open ! Open File referenced in 'Other Files' so need to inform its FileManager
Access:Switch.UseFile ! Use File referenced in 'Other Files' so need to inform its FileManager
FilesOpened = True
!--------------------------------------
CloseFiles ROUTINE
IF FilesOpened THEN
Access:Switch.Close
FilesOpened = False
END
Как на CW10 работать с SNMP ? (или вообще с сетью)
Попробовал подключить - просит SNMP.DLLvd-vuf писал(а):Во вложении шаблон с сырцами.
Писал для себя комментариев там нет.
Чистого примера использования у меня нет а с приложениями в купе еще куча шаблонов.
Если поможет, могу какую нидь вырезку из сырцов показать.
SNMP.DLL was not copied to the target directory because it could not be found via redirection lookup - C:\Clarion10\bin\SoftVelocity.Build.Clarion.targets:72,3
я зарегистрировал класс, подключил его в глобальных и попробовал собрать тестовое приложение
я что-то не так сделал ?
[я пока вспоминаю что и где - сидел компилировал свои старые программы смотрел как что устроено и соответственно могу ошибиться]
-
- Бывалый
- Сообщения: 61
- Зарегистрирован: 12 Декабрь 2008, 12:09
- Откуда: Верхний Уфалей
- Контактная информация:
Как на CW10 работать с SNMP ? (или вообще с сетью)
Это не ошибка, Клаша предупреждает (Warning) что не нашла файл в своем хозяйстве.SuperMax писал(а): SNMP.DLL was not copied to the target directory because it could not be found via redirection lookup - C:\Clarion10\bin\SoftVelocity.Build.Clarion.targets:72,3
В snmp.lib ссылки на другие системные dll, то есть в винде они есть, копировать их ни куда не нужно.
Коль приложение откомпилилось то должно работать без проблем.
(snmp.dll как таковой у меня тоже нет )
P.S. snmp.lib сборная солянка, сделана с помощью LibMaker из нескольких dll
- Admin
- Администратор
- Сообщения: 3959
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 25 раз
- Поблагодарили: 22 раза
- Контактная информация:
Как на CW10 работать с SNMP ? (или вообще с сетью)
ищите у себя
Snmpapi.dll
Mgmtapi.dll
и т.д.
Где находятся функции можно проверить на MSDN
Внизу написана DLL
https://msdn.microsoft.com/en-us/librar ... s.85).aspx
Snmpapi.dll
Mgmtapi.dll
и т.д.
Где находятся функции можно проверить на MSDN
Внизу написана DLL
https://msdn.microsoft.com/en-us/librar ... s.85).aspx
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Admin
- Администратор
- Сообщения: 3959
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 25 раз
- Поблагодарили: 22 раза
- Контактная информация:
Как на CW10 работать с SNMP ? (или вообще с сетью)
Компильнул в 10-ке. Все работает как бы и запускается.
Проблема с якобы отсутствующей SNMP.DLL в старом шаблоне. Не заточен он под C10
Проблема с якобы отсутствующей SNMP.DLL в старом шаблоне. Не заточен он под C10
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
-
- Бывалый
- Сообщения: 61
- Зарегистрирован: 12 Декабрь 2008, 12:09
- Откуда: Верхний Уфалей
- Контактная информация:
Как на CW10 работать с SNMP ? (или вообще с сетью)
здесь под руками желательно иметь консольное средство для работы с snmp - snmpwalk
в юниксе оно обычно есть по умолчанию, для винды можно найти в интернете.
потому что если из проги нет результата, то для начала проверить через snmpwalk
и проверять OID'ы при работе с конкретным железом проще.
(snmpwalk -v1 -c public 10.10.0.1 .1.3.6.1.2.1.1.1)
в юниксе оно обычно есть по умолчанию, для винды можно найти в интернете.
потому что если из проги нет результата, то для начала проверить через snmpwalk
и проверять OID'ы при работе с конкретным железом проще.
(snmpwalk -v1 -c public 10.10.0.1 .1.3.6.1.2.1.1.1)
- Admin
- Администратор
- Сообщения: 3959
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 25 раз
- Поблагодарили: 22 раза
- Контактная информация:
Как на CW10 работать с SNMP ? (или вообще с сетью)
Интересная тема. Только вот дома непонятно для чегоvd-vuf писал(а):(snmpwalk -v1 -c public 10.10.0.1 .1.3.6.1.2.1.1.1)
Код: Выделить всё
MacBook-Air-mixer:~ mixer$ snmpwalk -v1 -c public 192.168.1.8 .1.3.6.1.2.1.1.1
SNMPv2-MIB::sysDescr.0 = STRING: Linux DiskStation 2.6.32.12 #5592 Wed Aug 19 13:37:12 CST 2015 armv5tel
MacBook-Air-mixer:~ mixer$ snmpwalk -v1 -c public 192.168.1.8 .1.3.6.1.2.1.1.3
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (33899665) 3 days, 22:09:56.65
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Как на CW10 работать с SNMP ? (или вообще с сетью)
С SNMP разобрался - пример запустил. все отлично работает (использую ф-ю SNMP.Get). Огромное спасибо !
остается реализовать SNMP.SET
с самим SNMP у меня опыт работы есть - я написал собственный стек TCP/IP с модулями NTP/DHCP/SNMP итд под микроконтроллеры AVR на СИ.
если интересно - результат http://maxiol.ru/
В копилку информации по SNMP добавлю (сайт не мой) http://logic-bratsk.ru/brlug/snmp_my/index.htm - мало ли кто-то полезет внутрь этого протокола, ибо на низком уровне он достаточно "хитрый"
Если будут вопросы по внутренностям SNMP - велкам.
остается реализовать SNMP.SET
с самим SNMP у меня опыт работы есть - я написал собственный стек TCP/IP с модулями NTP/DHCP/SNMP итд под микроконтроллеры AVR на СИ.
если интересно - результат http://maxiol.ru/
В копилку информации по SNMP добавлю (сайт не мой) http://logic-bratsk.ru/brlug/snmp_my/index.htm - мало ли кто-то полезет внутрь этого протокола, ибо на низком уровне он достаточно "хитрый"
Если будут вопросы по внутренностям SNMP - велкам.