Показать сообщение отдельно
  #1  
Старый 04.06.2013, 08:09
darchken darchken вне форума
Прохожий
 
Регистрация: 31.03.2013
Сообщения: 29
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию idTelnet и цикл IF

Помогите с программой!

Дело вот в чем, надо поставить прогу на автозагрузку чтобы собирал бекапы с оборудовании. Но только если в программе не указывать цикл IF и оставить одно оборудование то работает через раз, не отправляет команды и если оставить IF то вообще не работает. Выходит username:, ждет а потом говорит типа время превышено и на этом все. Помогите побороть задачку.

Код:
procedure TForm1.IdTelnet1DataAvailable(Sender: TIdTelnet;
  const Buffer: String);
const
  CR=#13;
  LF=#10;
var
  Start, Stop: integer;
  begin
    memo1.Lines.Add('');
    start:=1;
    stop:=Pos(CR, Buffer);
    if stop = 0 then
      stop:=length(buffer)+1;
    while start<=length(buffer) do
      begin
        memo1.Lines.Strings[memo1.Lines.Count - 1]:=
        memo1.Lines.Strings[memo1.Lines.count - 1] +
        copy(buffer, start, stop - start);
        if buffer[stop] = CR then begin
            memo1.Lines.Add('');
        end;
        start:=stop+1;
        if start > length(buffer) then break;
        if buffer[start] = LF then start:=start+1;
        stop:=start;
        while (buffer[stop] <> CR) and (stop <=length(buffer)) do
        stop:=stop+1;
      end;
end;
 
procedure TForm1.snd(ds: string);
begin
  for i:=1 to length(ds) do idtelnet1.SendCh(ds[i]);
  idtelnet1.SendCh(#13);
end;
 
procedure TForm1.tlnt(ipadr: string; hostname: string);
begin
 usr:='rroot';
 pass:='rootpass';
 lgt:='logout';
 cmd:='enable' + #13 + 'backup configuration ftp 10.244.7.205 ' + hostname + '-' + datetimetostr(date);
 IdTelnet1.Host:=ipadr;
 IdTelnet1.Connect;
 snd(usr);
 snd(pass);
 snd(' ');
 snd(' ');
 snd(cmd);
 snd('y');
// Sleep(60000);
 snd(lgt);
end;
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
 for i:=1 to 2 do begin
 if i=1 then  tlnt('10.24.5.14', 'huawei-1');
 if i=2 then  tlnt('10.24.5.178', 'huawei-2');
 end;
end;
end.
Ответить с цитированием