Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Conexión Telnet (https://www.clubdelphi.com/foros/showthread.php?t=95374)

ramonibk 02-09-2021 13:41:51

Conexión Telnet
 
Ante de nada deciros que mi nivel de programador es mínimo (programo en defensa propia con ayuda de san google).
Estoy intentando realizar una conexión a diferentes equipos que tengo repartidos en una gran red.
estos equipos disponen la gran mayoría de servidor telnet.
el código que uso es.
el el evento DataAvailable del IdTelnet de Indy
Código Delphi [-]
  
StrBuffer := bytestostring(Buffer);
  if Ansipos(trim('login'),trim(StrBuffer))<>0 then
   Begin
    IdTelnet1.Socket.WriteLn(EdUser.Text);
    Sleep(1000);
    IdTelnet1.Socket.WriteLn(EdPass.Text);
    Sleep(StrToInt(EdTimer.Text)*1000);
    IdTelnet1.Socket.WriteLn(EdCommand.Text);
   End;
  Log.Text := Log.Text + bytestostring(Buffer);
  Log.SelStart := Length( Log.Text );

Dentro de la red local esto me funciona correctamente pero cuando intento hacerlo a una ip fuera de la red local me encuentro con el problema de que realiza la conexión de usuario y contraseña pero no es capaz de ejecutar el comando (un simple Dir).
como veis el Sleep lo he puesto para poder aumentarlo pero en ninguno de los casos el comando se ejecuta.
alguien puede darme alguna pista.

Un saludo.

Casimiro Notevi 02-09-2021 13:48:45

Por qué sabes que no se ejecuta el "dir", lo mismo es que no hay nada en el directorio donde estás conectado.
¿Algún mensaje de error?

ramonibk 03-09-2021 07:07:42

Buenos días.

Si. el directorio tiene contenido. de echo si después yo le mando la orden desde por separado. esta se cumple sin problema.

ramonibk 03-09-2021 07:44:00

Hola de nuevo.
no se si la solución es la mas ortodoxa pero funciona.
he creado un procedimiento llamado MyTimer
en el cual tengo.
Código Delphi [-]
 Timer1.Interval := StrToInt(EdTimer.Text)*1000;
 Timer1.Enabled := True;
el evento DataAvailable del Indy telnet queda.
Código Delphi [-]
 procedure TForm1.IdTelnet1DataAvailable(Sender: TIdTelnet;
  const Buffer: TIdBytes);
begin
  StrBuffer := bytestostring(Buffer);
  if Ansipos(trim('login'),trim(StrBuffer))<>0 then
   Begin
    IdTelnet1.Socket.WriteLn(EdUser.Text);
    Sleep(1000);
    IdTelnet1.Socket.WriteLn(EdPass.Text);
    MyTimer;
   End;
  Log.Text := Log.Text + bytestostring(Buffer);
  Log.SelStart := Length( Log.Text );
end;
y el Timer1 es el que genera la consulta y una vez echa se desconecta.

Un saludo a todos.


La franja horaria es GMT +2. Ahora son las 05:15:08.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi