Ver Mensaje Individual
  #4  
Antiguo 28-04-2018
koalasoft koalasoft is offline
Miembro
 
Registrado: oct 2004
Ubicación: Tenosique Tabasco
Posts: 86
Reputación: 20
koalasoft Va por buen camino
Mi problema radicaba en que al envia datos a la terminal era demasiado rápido y solo ejecutaba el ultimo comando enviado, asi que decidí utilizar el sleep para darle oportunidad de poder conectarme ...

Código Delphi [-]
procedure TForm1.BtnConectarClick(Sender: TObject);
begin
  Telnet.Host := IPServidor.Text;
  Telnet.Port := StrToInt( Puerto.Text );
  try
  Telnet.Connect;
  log.Lines.Add('Intentando conexión...');
  log.Lines.Add('');
  except
    ShowMessage('No se pudo realizar la conexión..');
    Exit;
  end;
end;

y una vez conectado envío los los datos de unicio (usuario y contraseña) seguido de los comando que requiero...

Evento OnConnect del componente TidTelnet

Código Delphi [-]
if Telnet.Connected then
  begin
    log.Lines.Add('Conectado...') ;
    log.Lines.Add('') ;
    Sleep(1000);
    Telnet.WriteLn('root');
    Sleep(1000);
    Telnet.WriteLn('admin');
    Sleep(1000);
    Telnet.WriteLn('enable');
    Sleep(1000);
    Telnet.WriteLn('config');
    Sleep(1000);
  end
    else
      begin
        log.Lines.Add('Error en la Conección...') ;
        log.Lines.Add('') ;
      end;

Requerido para que el cursor en la terminal se posicione en la ultima linea de la ultima columna para que este preparado para nuevos comando..

Evento OnDataAvailable del componente TIdTelnet

Código Delphi [-]
procedure TForm1.TelnetDataAvailable(Sender: TIdTelnet;
  const Buffer: String);
{This routine comes directly from the ICS TNDEMO code. Thanks to
Francois Piette
It updates the memo control when we get data}
const
    CR = #13;
    LF = #10;
var
    Start, Stop : Integer;
begin
  if Log.Lines.Count = 0 then
      Log.Lines.Add('');
 
  Start := 1;
  Stop  := Pos(CR, Buffer);
  if Stop = 0 then
      Stop := Length(Buffer) + 1;
  while Start <= Length(Buffer) do
  begin
      Log.Lines.Strings[Log.Lines.Count - 1] :=
          Log.Lines.Strings[Log.Lines.Count - 1] +
          Copy(Buffer, Start, Stop - Start);
      if Buffer[Stop] = CR then
      begin
          Log.Lines.Add('');
          {$IFNDEF Linux}
          SendMessage(Log.Handle, WM_KEYDOWN, VK_UP, 1);
          {$ENDIF}
      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;

De alli en adelante ya podré usar desde la aplicación las configuraciones que requiero ...


Saludos !! ..

Última edición por Casimiro Notevi fecha: 29-04-2018 a las 02:31:09.
Responder Con Cita