Problema cuando ejecuto un sencillo script vbs desde programador de tareas.

02/09/2008 - 09:52 por angelInformatica | Informe spam
Buenos días a tod@s

Tengo un sencillo script en vbs, el cual adjuntaré después, que cambia
la contraseña a un usuario dentro de un servidor zFTPServer. Luego,
envia un correo avisando del cambio.

El script funciona correctamente, pero cuando lo ejecuto desde el
programador de tareas, no funciona: permanece activo durante un
tiempo, y no realiza las funciones propias del script.

Yo creo que el error lo tengo al lanzar el vbs desde el programador de
tareas, pues he leido que se puede lanzar dentro de un script.cmd, con
la aplicación wscript, y ahí es donde pienso necesito ayuda, pues el
script, cuando se ejecuta con doble click, desde Windows, funciona
correctamente.

Agradecería una gran ayuda en este pequeño detalle que me queda.

Un saludo, y muchas gracias de antemano.

Adjunto el script, por si este no fuera el problema.





intUpperLimit = 6
intLowerLimit = 3
Randomize
intCharacters = Int(((intUpperLimit - intLowerLimit + 1) * Rnd) +
intUpperLimit)
intUpperLimit = 80

intLowerLimit = 65
For i = 1 to intCharacters
Randomize
intASCIIValue = Int(((intUpperLimit - intLowerLimit + 1) * Rnd) +
intLowerLimit)
strPassword1 = strPassword1 & Chr(intASCIIValue)

Next
'para mostrarlo en pantalla
Wscript.Echo strPassword1

'conexion por telnet al puerto de administracion del ftp en
HEstia
'Create the shell object
Set oShell = CreateObject("WScript.Shell")
'Start up command prompt
oShell.run"cmd.exe"
WScript.Sleep 500
'Send keys to active window; change the
' ip address as needed.
oShell.SendKeys"telnet hestia 3145"
'Emulate the enter key
oShell.SendKeys("{Enter}")
WScript.Sleep 1000
'write the user name to the cmd window
oShell.SendKeys"user admin"
oShell.SendKeys("{Enter}")
WScript.Sleep 500
'write the password to the cmd window
oShell.SendKeys"pass habilitaftp4me."
oShell.SendKeys("{Enter}")
WScript.Sleep 500
oShell.SendKeys "passwd ""miprueba1"" " & Chr(34) & strPassword1 &
Chr(34) & " "
oShell.Sendkeys("{Enter}")
'Exit the program
oShell.SendKeys"% "
oShell.SendKeys "quit"
oShell.SendKeys("{Enter}")
'FIN USUARIO1

' **** Ahora voy a generar el correo electronico y a enviarlo.
Dim oEmail
Set oEmail = CreateObject("CDO.Message")
oEmail.From = "amoreno@marazzi.es"
oEmail.To = "amoreno@marazzi.es"
oEmail.Subject ="contraseñas FTP"
oEmail.TextBody = "Las cuentas son de un solo uso. Todos los Lunes se
Enviaran nuevas contraseñas. usuario1 pass: " & strPassword1
'oEMail.AddAttachment freeSpace.txt
' Configurar el servidor SMTP
oEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/co...sing") = 2
'Name or IP of Remote SMTP Server
oEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/co...rver") "10.140.0.24"
'Server port (typically 25)
oEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/co...port") 25

'oEmail.Configuration.Fields.Update
'oEmail.Send
Set oEmail = Nothing

Preguntas similare

Leer las respuestas

#1 Daniel Ríos
02/09/2008 - 10:16 | Informe spam
No voy a revisar el sript porque no dispongo de los conocimientos necesarios
sobre VB para poder comentarlo, pero sí te podría indicar cómo probar a
ejecutarlo.
¿Qué ocurre si lo ejecutas al iniciar sesión de forma automática, es decir,
has probado a cargarlo en la carpeta Inicio de Inicio --> Programas?
Si es un EXE, ¿probaste a cargarlo como un servicio, que se ejecute a través
de una tarea de Windows?

Daniel Ríos



"angelInformatica" escribió en el mensaje
news:
Buenos días a

Tengo un sencillo script en vbs, el cual adjuntaré después, que cambia
la contraseña a un usuario dentro de un servidor zFTPServer. Luego,
envia un correo avisando del cambio.

El script funciona correctamente, pero cuando lo ejecuto desde el
programador de tareas, no funciona: permanece activo durante un
tiempo, y no realiza las funciones propias del script.

Yo creo que el error lo tengo al lanzar el vbs desde el programador de
tareas, pues he leido que se puede lanzar dentro de un script.cmd, con
la aplicación wscript, y ahí es donde pienso necesito ayuda, pues el
script, cuando se ejecuta con doble click, desde Windows, funciona
correctamente.

Agradecería una gran ayuda en este pequeño detalle que me queda.

Un saludo, y muchas gracias de antemano.

Adjunto el script, por si este no fuera el problema.





intUpperLimit = 6
intLowerLimit = 3
Randomize
intCharacters = Int(((intUpperLimit - intLowerLimit + 1) * Rnd) +
intUpperLimit)
intUpperLimit = 80

intLowerLimit = 65
For i = 1 to intCharacters
Randomize
intASCIIValue = Int(((intUpperLimit - intLowerLimit + 1) * Rnd) +
intLowerLimit)
strPassword1 = strPassword1 & Chr(intASCIIValue)

Next
'para mostrarlo en pantalla
Wscript.Echo strPassword1

'conexion por telnet al puerto de administracion del ftp en
HEstia
'Create the shell object
Set oShell = CreateObject("WScript.Shell")
'Start up command prompt
oShell.run"cmd.exe"
WScript.Sleep 500
'Send keys to active window; change the
' ip address as needed.
oShell.SendKeys"telnet hestia 3145"
'Emulate the enter key
oShell.SendKeys("{Enter}")
WScript.Sleep 1000
'write the user name to the cmd window
oShell.SendKeys"user admin"
oShell.SendKeys("{Enter}")
WScript.Sleep 500
'write the password to the cmd window
oShell.SendKeys"pass habilitaftp4me."
oShell.SendKeys("{Enter}")
WScript.Sleep 500
oShell.SendKeys "passwd ""miprueba1"" " & Chr(34) & strPassword1 &
Chr(34) & " "
oShell.Sendkeys("{Enter}")
'Exit the program
oShell.SendKeys"% "
oShell.SendKeys "quit"
oShell.SendKeys("{Enter}")
'FIN USUARIO1

' **** Ahora voy a generar el correo electronico y a enviarlo.
Dim oEmail
Set oEmail = CreateObject("CDO.Message")
oEmail.From = ""
oEmail.To = ""
oEmail.Subject ="contraseñas FTP"
oEmail.TextBody = "Las cuentas son de un solo uso. Todos los Lunes se
Enviaran nuevas contraseñas. usuario1 pass: " & strPassword1
'oEMail.AddAttachment freeSpace.txt
' Configurar el servidor SMTP
oEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/co...sing") = 2
'Name or IP of Remote SMTP Server
oEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/co...rver") "10.140.0.24"
'Server port (typically 25)
oEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/co...port") 25

'oEmail.Configuration.Fields.Update
'oEmail.Send
Set oEmail = Nothing
Respuesta Responder a este mensaje
#2 angelInformatica
02/09/2008 - 11:13 | Informe spam
On 2 sep, 10:16, "Daniel Ríos" wrote:
No voy a revisar el sript porque no dispongo de los conocimientos necesarios
sobre VB para poder comentarlo, pero sí te podría indicar cómo probar a
ejecutarlo.
¿Qué ocurre si lo ejecutas al iniciar sesión de forma automática, es decir,
has probado a cargarlo en la carpeta Inicio de Inicio --> Programas?
Si es un EXE, ¿probaste a cargarlo como un servicio, que se ejecute a través
de una tarea de Windows?

Daniel Ríos

"angelInformatica" escribió en el mensajenews:
Buenos días a

Tengo un sencillo script en vbs, el cual adjuntaré después, que cambia
la contraseña a un usuario dentro de un servidor zFTPServer. Luego,
envia un correo avisando del cambio.

El script funciona correctamente, pero cuando lo ejecuto desde el
programador de tareas, no funciona: permanece activo durante un
tiempo, y no realiza las funciones propias del script.

Yo creo que el error lo tengo al lanzar el vbs desde el programador de
tareas, pues he leido que se puede lanzar dentro de un script.cmd, con
la aplicación wscript, y ahí es donde pienso necesito ayuda, pues el
script, cuando se ejecuta con doble click, desde Windows, funciona
correctamente.

Agradecería una gran ayuda en este pequeño detalle que me queda.

Un saludo, y muchas gracias de antemano.

Adjunto el script, por si este no fuera el problema.

intUpperLimit = 6
intLowerLimit = 3
Randomize
intCharacters = Int(((intUpperLimit - intLowerLimit + 1) * Rnd) +
intUpperLimit)
intUpperLimit = 80

intLowerLimit = 65
For i = 1 to intCharacters
    Randomize
    intASCIIValue = Int(((intUpperLimit - intLowerLimit + 1) * Rnd) +
intLowerLimit)
    strPassword1 = strPassword1 & Chr(intASCIIValue)

Next
'para mostrarlo en pantalla
Wscript.Echo strPassword1

     'conexion por telnet al puerto de administracion del ftp en
HEstia
    'Create the shell object
    Set oShell = CreateObject("WScript.Shell")
    'Start up command prompt
    oShell.run"cmd.exe"
    WScript.Sleep 500
    'Send keys to active window; change the
    '     ip address as needed.
    oShell.SendKeys"telnet hestia 3145"
    'Emulate the enter key
    oShell.SendKeys("{Enter}")
    WScript.Sleep 1000
    'write the user name to the cmd window
    oShell.SendKeys"user admin"
    oShell.SendKeys("{Enter}")
    WScript.Sleep 500
    'write the password to the cmd window
    oShell.SendKeys"pass habilitaftp4me."
    oShell.SendKeys("{Enter}")
    WScript.Sleep 500
    oShell.SendKeys "passwd ""miprueba1"" " & Chr(34) & strPassword1 &
Chr(34) & " "
    oShell.Sendkeys("{Enter}")
     'Exit the program
     oShell.SendKeys"% "
    oShell.SendKeys "quit"
    oShell.SendKeys("{Enter}")
'FIN USUARIO1

' **** Ahora voy a generar el correo electronico y a enviarlo.
Dim oEmail
Set oEmail = CreateObject("CDO.Message")
oEmail.From = ""
oEmail.To = ""
oEmail.Subject ="contraseñas FTP"
oEmail.TextBody = "Las cuentas son de un solo uso. Todos los Lunes se
Enviaran nuevas contraseñas. usuario1  pass: " & strPassword1
'oEMail.AddAttachment freeSpace.txt
' Configurar el servidor SMTP
oEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/co...sing") = 2
'Name or IP of Remote SMTP Server
oEmail.Configuration.Fields.Item _
  ("http://schemas.microsoft.com/cdo/co...rver") > "10.140.0.24"
'Server port (typically 25)
oEmail.Configuration.Fields.Item _
  ("http://schemas.microsoft.com/cdo/co...port") > 25

'oEmail.Configuration.Fields.Update
'oEmail.Send
Set oEmail = Nothing



No es necesario que revises el script, porque cuando lo ejecuto desde
el escritorio de Windows, validado como mi usuario administrador,
funciona correctamente.
El script tiene extension vbs, no es un exe. No lo debo lanzar como
servicio ni cargarlo en el inicio, aunque lo probaré haber si
funciona.
Lo que me ocurre es que, cuando lo lanzo desde el programador de
tareas, no funciona correctamente, y estoy casi convencido de que no
lo lanzo correctamente, de que me falta lanzarlo desde algún cmd o
desde alguna aplicación tipo wscript.

Muchas gracias, seguimos mirando.

Un saludo,
Angel Moreno
Respuesta Responder a este mensaje
#3 Gabriel
02/09/2008 - 11:21 | Informe spam
Las tareas programadas se ejecutan en segundo plano, no se pueden
interactuar con ellas, por ejemplo la sentencia:

Wscript.Echo strPassword1

está esperando que le des aceptar, y como no puedes el trabajo se queda
activo.

un saludo.
Respuesta Responder a este mensaje
#4 Ramon Jiménez
02/09/2008 - 11:37 | Informe spam
No es muy recomendable lanzar consolas y luego congiar en que los Sendkeys
funcionen como esperamos...
¿Por qué no pones un fichero de Log para intentar hacer un debugging de
donde se queda?

Ramon

"angelInformatica" wrote in message
news:
On 2 sep, 10:16, "Daniel Ríos" wrote:
No voy a revisar el sript porque no dispongo de los conocimientos
necesarios
sobre VB para poder comentarlo, pero sí te podría indicar cómo probar a
ejecutarlo.
¿Qué ocurre si lo ejecutas al iniciar sesión de forma automática, es
decir,
has probado a cargarlo en la carpeta Inicio de Inicio --> Programas?
Si es un EXE, ¿probaste a cargarlo como un servicio, que se ejecute a
través
de una tarea de Windows?

Daniel Ríos

"angelInformatica" escribió en el
mensajenews:
Buenos días a

Tengo un sencillo script en vbs, el cual adjuntaré después, que cambia
la contraseña a un usuario dentro de un servidor zFTPServer. Luego,
envia un correo avisando del cambio.

El script funciona correctamente, pero cuando lo ejecuto desde el
programador de tareas, no funciona: permanece activo durante un
tiempo, y no realiza las funciones propias del script.

Yo creo que el error lo tengo al lanzar el vbs desde el programador de
tareas, pues he leido que se puede lanzar dentro de un script.cmd, con
la aplicación wscript, y ahí es donde pienso necesito ayuda, pues el
script, cuando se ejecuta con doble click, desde Windows, funciona
correctamente.

Agradecería una gran ayuda en este pequeño detalle que me queda.

Un saludo, y muchas gracias de antemano.

Adjunto el script, por si este no fuera el problema.

intUpperLimit = 6
intLowerLimit = 3
Randomize
intCharacters = Int(((intUpperLimit - intLowerLimit + 1) * Rnd) +
intUpperLimit)
intUpperLimit = 80

intLowerLimit = 65
For i = 1 to intCharacters
Randomize
intASCIIValue = Int(((intUpperLimit - intLowerLimit + 1) * Rnd) +
intLowerLimit)
strPassword1 = strPassword1 & Chr(intASCIIValue)

Next
'para mostrarlo en pantalla
Wscript.Echo strPassword1

'conexion por telnet al puerto de administracion del ftp en
HEstia
'Create the shell object
Set oShell = CreateObject("WScript.Shell")
'Start up command prompt
oShell.run"cmd.exe"
WScript.Sleep 500
'Send keys to active window; change the
' ip address as needed.
oShell.SendKeys"telnet hestia 3145"
'Emulate the enter key
oShell.SendKeys("{Enter}")
WScript.Sleep 1000
'write the user name to the cmd window
oShell.SendKeys"user admin"
oShell.SendKeys("{Enter}")
WScript.Sleep 500
'write the password to the cmd window
oShell.SendKeys"pass habilitaftp4me."
oShell.SendKeys("{Enter}")
WScript.Sleep 500
oShell.SendKeys "passwd ""miprueba1"" " & Chr(34) & strPassword1 &
Chr(34) & " "
oShell.Sendkeys("{Enter}")
'Exit the program
oShell.SendKeys"% "
oShell.SendKeys "quit"
oShell.SendKeys("{Enter}")
'FIN USUARIO1

' **** Ahora voy a generar el correo electronico y a enviarlo.
Dim oEmail
Set oEmail = CreateObject("CDO.Message")
oEmail.From = ""
oEmail.To = ""
oEmail.Subject ="contraseñas FTP"
oEmail.TextBody = "Las cuentas son de un solo uso. Todos los Lunes se
Enviaran nuevas contraseñas. usuario1 pass: " & strPassword1
'oEMail.AddAttachment freeSpace.txt
' Configurar el servidor SMTP
oEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/co...sing") = 2
'Name or IP of Remote SMTP Server
oEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/co...rver") > "10.140.0.24"
'Server port (typically 25)
oEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/co...port") > 25

'oEmail.Configuration.Fields.Update
'oEmail.Send
Set oEmail = Nothing



No es necesario que revises el script, porque cuando lo ejecuto desde
el escritorio de Windows, validado como mi usuario administrador,
funciona correctamente.
El script tiene extension vbs, no es un exe. No lo debo lanzar como
servicio ni cargarlo en el inicio, aunque lo probaré haber si
funciona.
Lo que me ocurre es que, cuando lo lanzo desde el programador de
tareas, no funciona correctamente, y estoy casi convencido de que no
lo lanzo correctamente, de que me falta lanzarlo desde algún cmd o
desde alguna aplicación tipo wscript.

Muchas gracias, seguimos mirando.

Un saludo,
Angel Moreno
Respuesta Responder a este mensaje
#5 Fernando Reyes [MS MVP]
02/09/2008 - 13:41 | Informe spam
El problema lo tienes porque el script se basa en sendkeys para enviar las
pulsaciones de teclas necesarias para realizar las tareas a una ventana de
comandos. Al no haber una sesión activa, esa ventana de comandos es abierta,
pero sin ventana, sólo como proceso, por lo que sendkeys no puede enviarle
nada y por tanto el script no realiza sus tareas. Podrías intentar ver si
funciona teniendo iniciada una sesión, del mismo usuario que lanza la tarea
programada, en el equipo cuando la tarea es lanzada, para ver si así la
ventana de comandos sí se abre como ventana y no sólo como proceso. Lo malo
es que si se trata de un servidor, no es conveniente que tenga iniciada una
sesión, por lo que la solución debería ser otra. Por lo que veo en la página
de ese servidor, por medio de PHP o PERL sí podrías controlar con scripting
ese servidor:

http://www.zftpserver.com/documentation.php


Un saludo
Fernando Reyes [MS MVP]
MCSE Windows 2000 / 2003
MCSA Windows Server 2003
http://freyes.svetlian.com
http://urpiano.wordpress.com
RSS: http://urpiano.wordpress.com/feed
freyes.champú@champú.mvps.org
(Aclárate la cabeza si quieres escribirme)


"angelInformatica" escribió en el mensaje de
noticias
news:
Buenos días a

Tengo un sencillo script en vbs, el cual adjuntaré después, que cambia
la contraseña a un usuario dentro de un servidor zFTPServer. Luego,
envia un correo avisando del cambio.

El script funciona correctamente, pero cuando lo ejecuto desde el
programador de tareas, no funciona: permanece activo durante un
tiempo, y no realiza las funciones propias del script.

Yo creo que el error lo tengo al lanzar el vbs desde el programador de
tareas, pues he leido que se puede lanzar dentro de un script.cmd, con
la aplicación wscript, y ahí es donde pienso necesito ayuda, pues el
script, cuando se ejecuta con doble click, desde Windows, funciona
correctamente.

Agradecería una gran ayuda en este pequeño detalle que me queda.

Un saludo, y muchas gracias de antemano.

Adjunto el script, por si este no fuera el problema.





intUpperLimit = 6
intLowerLimit = 3
Randomize
intCharacters = Int(((intUpperLimit - intLowerLimit + 1) * Rnd) +
intUpperLimit)
intUpperLimit = 80

intLowerLimit = 65
For i = 1 to intCharacters
Randomize
intASCIIValue = Int(((intUpperLimit - intLowerLimit + 1) * Rnd) +
intLowerLimit)
strPassword1 = strPassword1 & Chr(intASCIIValue)

Next
'para mostrarlo en pantalla
Wscript.Echo strPassword1

'conexion por telnet al puerto de administracion del ftp en
HEstia
'Create the shell object
Set oShell = CreateObject("WScript.Shell")
'Start up command prompt
oShell.run"cmd.exe"
WScript.Sleep 500
'Send keys to active window; change the
' ip address as needed.
oShell.SendKeys"telnet hestia 3145"
'Emulate the enter key
oShell.SendKeys("{Enter}")
WScript.Sleep 1000
'write the user name to the cmd window
oShell.SendKeys"user admin"
oShell.SendKeys("{Enter}")
WScript.Sleep 500
'write the password to the cmd window
oShell.SendKeys"pass habilitaftp4me."
oShell.SendKeys("{Enter}")
WScript.Sleep 500
oShell.SendKeys "passwd ""miprueba1"" " & Chr(34) & strPassword1 &
Chr(34) & " "
oShell.Sendkeys("{Enter}")
'Exit the program
oShell.SendKeys"% "
oShell.SendKeys "quit"
oShell.SendKeys("{Enter}")
'FIN USUARIO1

' **** Ahora voy a generar el correo electronico y a enviarlo.
Dim oEmail
Set oEmail = CreateObject("CDO.Message")
oEmail.From = ""
oEmail.To = ""
oEmail.Subject ="contraseñas FTP"
oEmail.TextBody = "Las cuentas son de un solo uso. Todos los Lunes se
Enviaran nuevas contraseñas. usuario1 pass: " & strPassword1
'oEMail.AddAttachment freeSpace.txt
' Configurar el servidor SMTP
oEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/co...sing") = 2
'Name or IP of Remote SMTP Server
oEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/co...rver") "10.140.0.24"
'Server port (typically 25)
oEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/co...port") 25

'oEmail.Configuration.Fields.Update
'oEmail.Send
Set oEmail = Nothing
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida