Re: snmp мониторинг

Так же решил добавить еще вывод на почту пункта местоположение. Он присылается но вместо нужного текста кракозябры. не понимает кодировку)

Re: snmp мониторинг

scopus wrote:

Спасибо теперь письма приходят и в таблице нормально отображатеся, но вот там где нету картриджа он присылает письма всеравно но с отображение 0% возможно указать что бы следил где меньше 10% но больше 1%? и только если попадает в этот диапазон то присылать

попробуйте такое условие

if (ValidInt(procentYellow)) and (StrToInt(procentYellow) < 10) and (StrToInt(procentYellow) > 1) then 
Dmitry.

Re: snmp мониторинг

добавил что бы на почту еще ФИО из таблици отправлял в итоге присылает 10.7.39.51 а аЕб‡аКаИаМаАаН ааЛаЕаКбаАаНаДб€ ааМаИаЛбŒаЕаВаИб‡ Magenta Cartridge HP CE403A
:7%
как исправить кракозябры?

Re: snmp мониторинг

и еще не понял как можно сделать что бы параметры сервера почты брал из бд

Re: snmp мониторинг

scopus wrote:

добавил что бы на почту еще ФИО из таблици отправлял в итоге присылает 10.7.39.51 а аЕб‡аКаИаМаАаН ааЛаЕаКбаАаНаДб€ ааМаИаЛбŒаЕаВаИб‡ Magenta Cartridge HP CE403A
:7%
как исправить кракозябры?

Была ошибка в программе, скачайте пожалуйста последнюю бета версию снова
https://www.dropbox.com/s/abazohrbdt3p9 … a.zip?dl=0

Dmitry.

Re: snmp мониторинг

А как сделать что бы можно было параметры сервера почты брал из бд

Re: snmp мониторинг

Сохраните параметры почты в БД, затем зная ID записи можно получить эти данные и подставить в фунцию SendMail, пример

var
   sServer, sUserName, sFrom, sTo, sLogin, sPassword: string;
begin

   sServer := SQLExecute('SELECT sServer FROM tablename WHERE id=1');
   sUserName := SQLExecute('SELECT sUserName FROM tablename WHERE id=1');
   sFrom := SQLExecute('SELECT sFrom FROM tablename WHERE id=1');
   sTo := SQLExecute('SELECT sTo FROM tablename WHERE id=1');
   sPassword := SQLExecute('SELECT sPassword FROM tablename WHERE id=1');

SendMail(sServer, sUserName, sPassword, 25, sFrom, sTo, ip + ' ' + 'Мало синего тонера "АО Консист-ОС(Курский)"', ip + ' : '+procentYellow+'%');  
Dmitry.

Re: snmp мониторинг

Можно сделать ограничение snmp запросов? А то если принтер не в сети то программа зависает где то на 2 минуты.

Re: snmp мониторинг

scopus wrote:

Можно сделать ограничение snmp запросов? А то если принтер не в сети то программа зависает где то на 2 минуты.

Имеете ввиду установить поменьше таймаут?

SNMP.ReceiveTimeout := 5000; // по умолчанию 5 сек, попробуйте его уменьшить
Dmitry.

Re: snmp мониторинг

как можно реализовать что если принтер в сети то 1 если не в сети то 0

Re: snmp мониторинг

в принципе есть параметр статус с ошибками там выдает от 1 до 3 но вот как сделать что если ответа не получил записать 0?

Re: snmp мониторинг

scopus wrote:

в принципе есть параметр статус с ошибками там выдает от 1 до 3 но вот как сделать что если ответа не получил записать 0?

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

Dmitry.

Re: snmp мониторинг

В принципе мне надо что бы отображался принтер онлайн или нет. можно как вариант использовать oid статуса принтера который в ответ присылает 1 или 3. Вот как вариант решения я предложил что бы этот прараметр записывать и красить зеленым цветом то что больше 1. но вот как сделать что если он не получил ответ на oid то записать 0. Если есть какой другой вариант буду раз услышать) Спасибо заранее

Re: snmp мониторинг

примерно так

sStatus := GetMIBValue(ip, '1.3.6.1.2.1.43.11.1.1.8.1.1'); 
if sStatus = '' then sStatus := '0';
Dmitry.

Re: snmp мониторинг

получается что то типо такого?

 begin
        ip := Form1.TableGrid1.Cells[0,i];
        if ip <> '' then
        begin
            Form1.Label1.Caption := ip;
            sStatus := GetMIBValue(ip, '1.3.6.1.2.1.43.11.1.1.8.1.1');
            if sStatus = '' then sStatus := '0';
                begin 
                   if sStatus <> '' then SQLExecute('UPDATE printer SET Status = '''+sStatus+''' WHERE id='+IntToStr(Form1.TableGrid1.dbIndexToID(i)));
               end;
         end;

Я правильно понял?

Re: snmp мониторинг

Да, только имеются лишние begin end и условие if sStatus <> '' можно убрать

        ip := Form1.TableGrid1.Cells[0,i];
        if ip <> '' then
        begin
            Form1.Label1.Caption := ip;
            sStatus := GetMIBValue(ip, '1.3.6.1.2.1.43.11.1.1.8.1.1');
            if sStatus = '' then sStatus := '0';
            SQLExecute('UPDATE printer SET Status = '''+sStatus+''' WHERE id='+IntToStr(Form1.TableGrid1.dbIndexToID(i)));
         end;
Dmitry.

Re: snmp мониторинг

Подскажите можно указать место хранения sql базы? предположим диск D

Re: snmp мониторинг

Запустите проект, затем зайдите в меню Options > Settings > Database location

Dmitry.

44 (edited by scopus 2019-04-09 07:35:57)

Re: snmp мониторинг

Как можно исправить данную ошибку. Перевел проект на MySQL

Post's attachments

Attachment icon Снимок.PNG 9.33 kb, 187 downloads since 2019-04-09 

Re: snmp мониторинг

Проект. Понимаю что ошибка из за ответа от принтера но может как то это исправить можно?

Post's attachments

Attachment icon Мониторинг принтера — копия (2).zip 1.75 mb, 375 downloads since 2019-04-09 

Re: snmp мониторинг

и еще вопрос можно ли как то сделать? выбор типа принтера цветной или черно белый и в зависимости от выбора будет опрашивать oid только 1 картриджа или чб? вкратце сделать выбор какие oid будет опрашивать на каждый принтер

47 (edited by scopus 2019-04-09 10:44:50)

Re: snmp мониторинг

как понял он текст понимает в кодировке ansi а при этом принтер передает в кодировке utf-8

вот какой ответ я получаю от принтера .1.3.6.1.2.1.43.11.1.1.6.1.1 = Черный картридж 14X HP CF214X
вот какой ответ я получаю через мониторинг который сделал в вашей среде разработки Черный картридж 14X HP CF214X

в чем может быть проблема?

Re: snmp мониторинг

scopus wrote:

Как можно исправить данную ошибку. Перевел проект на MySQL

Попробуйте в SQL запросах использовать функцию escape_special_characters, которая экранирует спец символы, которые вызывают ошибку. Пример использования

if sPrintModel <> '' then SQLExecute('UPDATE printer SET PrintModel = '''+escape_special_characters(sPrintModel)+''' WHERE id='+IntToStr(Form1.TableGrid1.dbIndexToID(i)));  // значение для получения модели принтера
Dmitry.

Re: snmp мониторинг

scopus wrote:

и еще вопрос можно ли как то сделать? выбор типа принтера цветной или черно белый и в зависимости от выбора будет опрашивать oid только 1 картриджа или чб? вкратце сделать выбор какие oid будет опрашивать на каждый принтер

Если я правильно понимаю, то заранее не известна модель принтера и соотвественно не ясно, чб он или цветной.

Dmitry.

Re: snmp мониторинг

Нет как раз модель известна и просто для него указать опрашивать oid только ЧБ а для другого уже все цвета опрашивать а для третьего предположим только красный картридж опрашивать. Тоесть при добавлении ip еще и указывать какой oid будет использоваться при опросе этого принтера (только ЧБ, Цветной  все цвета или каждый цвет отдельно)