Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Problema con Telnet y Script Vbs (https://www.clubdelphi.com/foros/showthread.php?t=81787)

gersojn 17-12-2012 18:36:04

Problema con Telnet y Script Vbs
 
Hola amigos, veran estoy desarrollando una aplicacion bastante basica, trabajo en Delphi XE3 Trial(a base de prueba) y Delphi 2010. La aplicacion debe efectuar un Backtup cada 12 Horas y despues de efectuar dicho Backup tiene que actualizar o cambiar la Ip publica del servidor o router.

El problema esta en que he intentado hacerlo de 2 formas y no he logrado obtener ese resultado.
- Desarrolle un cliente Telnet en Delphi (para mas exacto, el que esta en Delphi al Limite, no lo coloco porque no puedo poner enlaces), como prueba, donde le coloco el host del Router y puerto, el problema esta en que los resultados se muestran en un memo, y en este mismo se envian los comandos. Cuando conecto por cmd, me pide Username y Password, sin embargo en el cliente telnet no me muestra nada, si establece la conexion mas no pide usuario y password.

Codigo del Cliente Telnet

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
Telnet.Host := IPServidor.Text;
Telnet.Port := StrToInt( Puerto.Text );
Telnet.Connect;
Log.SetFocus;
end;

procedure TForm1.LogKeyPress(Sender: TObject; var Key: Char);
begin
if not Telnet.Connected then
Exit;
if Key = #13 then
begin
Telnet.Socket.WriteLn( sComando );
sComando := '';
end
else
sComando := sComando + Key;
end;

procedure TForm1.TelnetConnected(Sender: TObject);
begin
 //Log.Lines.Add( 'Conectando con ' + Telnet.Host + '.' );
 //Log.Lines.Add( '' );
end;

procedure TForm1.TelnetDataAvailable(Sender: TIdTelnet;
  const Buffer: String);
begin
Log.Text := log.Text+Buffer;
Log.SelStart := Length( Log.Text );
end;

Y tambien cree un Script vbs , el cual me funciona perfectamente, el problema es que hay que clickear en el para que haga el cambio de Ip. Intente con

Código Delphi [-]
ShellExecute (application.handle, 'open', 'directorio/script.vbs', nil, nil, SW_MAXIMIZE);
Pero, unicamente me habre una cmd, pero cuando lanza cada uno de los comandos, me marca que los comandos no son reconocidos.
Comandos como Telnet 127.0.0.1 23 , cosa que es ilogico.

Ya cree una variable de entorno tipo Path con acesso a Telnet de windows y probe tambien otra variable tipo User con acceso a telnet y nada.

Alguien tiene una idea ya sea de como ejecutar el vbs desde la app de Delphi o porque no funciona el Telnet, o alguna solucion adicional.
De antemano muchas gracias.
Saludos.

ElKurgan 18-12-2012 07:08:05

¿La plataforma es Windows 7?

Porque me parece recordar que hay servicios (como el Telnet) que no siempre se instalan activos por motivos de seguridad.
Prueba a ver si este es tu caso. Tienes que ir a "Panel de control\Programas" y ahí pulsamos sobre "Activar o desactivar características de Windows" y comprueba que están marcadas las opciones "Telnet Client" y "Telnet Server".

Tendrás que reiniciar Windows para que Telnet esté activo una vez instalado en el sistema.

Un saludo

gersojn 18-12-2012 15:46:01

Cita:

Empezado por ElKurgan (Mensaje 452019)
¿La plataforma es Windows 7?

Porque me parece recordar que hay servicios (como el Telnet) que no siempre se instalan activos por motivos de seguridad.
Prueba a ver si este es tu caso. Tienes que ir a "Panel de control\Programas" y ahí pulsamos sobre "Activar o desactivar características de Windows" y comprueba que están marcadas las opciones "Telnet Client" y "Telnet Server".

Tendrás que reiniciar Windows para que Telnet esté activo una vez instalado en el sistema.

Un saludo

Hola amigo, gracias por responder, el servicio del Cliente Telnet si esta activo, la plataforma es Windows 7 64 bits.
Como he dicho anteriormente tengo un script vbs con el cual si efectuo el reinicio, pero por desgracia hay que clickar sobre el para que haga el cambio, y la idea es automatizar todo. El backup en la app ya lo hace, lo que quiero hacer es sincronizar ambos en el mismo tiempo.

este es el codigo del script vbs
Código:

Set cloner = CreateObject("WScript.Shell")
 cloner.run"cmd"
 WScript.Sleep 500
 
cloner.SendKeys"telnet 192.168.1.1 23"
 cloner.SendKeys("{Enter}")
 WScript.Sleep 50
 
cloner.SendKeys"user"
 cloner.SendKeys("{Enter}")
 WScript.Sleep 50
 
cloner.SendKeys"password"
 cloner.SendKeys("{Enter}")
 WScript.Sleep 500

cloner.SendKeys"menu"
 cloner.SendKeys("{Enter}")
 WScript.Sleep 10

cloner.SendKeys("{DOWN}")
 WScript.Sleep 5

 cloner.SendKeys("{DOWN}")
 WScript.Sleep 5

 cloner.SendKeys("{DOWN}")
 WScript.Sleep 5

 cloner.SendKeys("{DOWN}")
 WScript.Sleep 5

 cloner.SendKeys("{DOWN}")
 WScript.Sleep 5

 cloner.SendKeys("{DOWN}")
 WScript.Sleep 5

 cloner.SendKeys("{DOWN}")
 WScript.Sleep 5

 cloner.SendKeys("{Enter}")
 WScript.Sleep 5

 cloner.SendKeys("{DOWN}")
 WScript.Sleep 5

 cloner.SendKeys("{RIGHT}")
 WScript.Sleep 5

cloner.SendKeys("{RIGHT}")
 WScript.Sleep 5

cloner.SendKeys("{RIGHT}")
 WScript.Sleep 5

 cloner.SendKeys("{Enter}")
 WScript.Sleep 10000
cloner.SendKeys("{Enter}")
 WScript.Sleep 10000
cloner.SendKeys("{Enter}")
 WScript.Sleep 10000

cloner.SendKeys"exit"
 cloner.SendKeys("{Enter}")

Este script funciona perfecto, para hacer el cambio de Ip publico, por telnet, el problema es que no puedo ejecutarlo desde la Aplicacion, no se porque sea o si se requiere de un metodo especial para ejecutar script vbs en delphi.
Sigo investigando, cualquier ayuda, aporte o sugerencia es bienvenida.
Saludos.


La franja horaria es GMT +2. Ahora son las 11:22:40.

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