Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2012, 19:28   #1
Chikoy
Пользователь
 
Регистрация: 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.
Вложения
Тип файла: rar Прога.rar (208.2 Кб, 176 просмотров)
Тип файла: txt Форма 1.txt (8.0 Кб, 235 просмотров)
Тип файла: txt Форма 2.txt (1.6 Кб, 183 просмотров)
Chikoy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Список активных принтеров 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