![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 30.04.2012
Сообщений: 11
|
![]()
Привет всем, кто читает мою тему. Пишу программу мониторинга принтеров на Delphi 7. У компании около 50 филиалов, все эти филиалы в одной сети и используют сетевые принтера, примерно в каждом филиале по 5 сетевых принтеров. На этапе создания программы столкнулся с проблемой, для того чтобы проводить опрос по SNMP протоколу на получение нужной информации о принтере необходимо знать его ip для того чтобы к нему обратиться. ВОТ ОНА И ПРОБЛЕМА если под опрос попадает компьютер то программа встает в ошибку а если другое сетевое устройство или принтер то выполняет операции как положено. В программе реализовано сканирование сети с такого ip и по такой ip с помощью ping-а, те ip адреса которые пингуются заносятся в массив ip-адресов, затем идет опрос snmp по ip в массиве и вот просьба и вопрос, люди добрые, помогите или подскажите как мне исключить ip адреса не принтеров из массива, чтоб массив содержал ip только принтеров?
Вот выложил код программы и программу, в ней правда еще лишнего много: { Функция SNMP опроса принтера } Function SNMPQuery (Host, Mib: string) : string; var s: String; i, j: Integer; SNMP: TIdSNMP; begin SNMP := TIdSNMP.Create(nil); SNMP.Query.Host := Host; SNMP.Query.Port := 161; SNMP.Query.Community := 'public'; SNMP.Query.PDUType := PDUGetRequest; SNMP.Query.MIBAdd(Mib,''); try if SNMP.SendQuery then for i := 0 to SNMP.Reply.ValueCount - 1 do SNMPQuery:= SNMP.Reply.Value[i]; finally SNMP.Free; end; end; { Опрос SNMP принтера } procedure TForm1.Button3Click(Sender: TObject); var Host, t: string; Begin Memo1.Clear; host:= '192.168.137.3'; mib1:= '1.3.6.1.2.1.43.11.1.1.8.1.1'; mib2:= '1.3.6.1.2.1.43.5.1.1.17.1'; mib3:= '1.3.6.1.2.1.25.3.5.1.1.1'; mib4:= '1.3.6.1.2.1.43.16.5.1.2.1.1'; mib5:= '1.3.6.1.2.1.1.5.0'; mib6:= '1.3.6.1.2.1.2.2.1.6.2'; mib7:= '1.3.6.1.2.1.43.10.2.1.4.1.1'; Memo1.Lines.Add('Объем картриджа' + ': ' + SNMPQuery(host, mib1)); Memo1.Lines.Add('Серийный номер' + ': ' + SNMPQuery(host, mib2)); Memo1.Lines.Add('Printing status' + ': ' + SNMPQuery(host, mib3)); Memo1.Lines.Add('Device status' + ': ' + SNMPQuery(host, mib4)); Memo1.Lines.Add('Host name' + ': ' + SNMPQuery(host, mib5)); Memo1.Lines.Add('Mac adress' + ': ' + SNMPQuery(host, mib6)); Memo1.Lines.Add('Page' + ': ' + SNMPQuery(host, mib7)); end; procedure TForm1.Button6Click(Sender: TObject); var i: integer; begin Label5.Visible:=true; Label6.Visible:=true; edit2.Visible:=true; NewIP.Visible:=true; EndIP.Visible:=true; button5.Visible:=true; button7.Visible:=true; for i:=0 to Form2.Pi-1 do listBox1.Items.Add(form2.masIP[i]); mib1:= '1.3.6.1.2.1.43.11.1.1.8.1.1'; Memo1.Lines.Add('Объем картриджа' + ': ' + SNMPQuery (form2.masIP[i], Mib1)); end; { Вызов Формы 2 для сканирования задаваемого диапазона ip адресов } unit Unit2; procedure TForm2.Button1Click(Sender: TObject); var i: integer; ip: string; begin Form1.Button6.Visible:= true; ip1:= edit1.Text; ip2:= edit2.Text; ip3:= edit3.Text; pi:= 0; for i:=strToint(ip2) to strToint(ip3) do begin ip:= ip1+intTostr(i); IdIcmpClient1.Host:=ip; IdIcmpClient1.ReceiveTimeout:=1000; IdIcmpClient1.Ping('32'); Caption:=IntToStr(IdIcmpClient1.Rep lyStatus.MsRoundTripTime); end; end; procedure TForm2.IdIcmpClient1Reply(ASender: TComponent; const AReplyStatus: TReplyStatus); begin try if IdIcmpClient1.Host=AReplyStatus.Fro mIpAddress then begin masIP[pi]:= AReplyStatus.FromIpAddress; pi:= pi+1; end; except on e:Exception do end; Form2.Close; end; end. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Список активных принтеров | nemoomen | Microsoft Office Excel | 2 | 26.04.2012 19:20 |
Работа с очередью печати принтеров | agronomchek | Помощь студентам | 2 | 02.03.2012 15:39 |
Команда по контроль печати принтеров | Uventus_13 | Помощь студентам | 2 | 18.01.2012 20:11 |
характеристики принтеров | alex(21) | Компьютерное железо | 3 | 30.12.2009 14:12 |
Обслуживание принтеров | Maxmax78 | Компьютерное железо | 6 | 19.07.2009 07:48 |