Ejecucion remota – PsExec un remedio facil y barato (by PsTools)

Puede que alguna vez se te haya pasado por la cabeza o simplemente hayas necesitado, ejecutar una aplicación un equipo remoto.
A mi si, hasta ahora lo iba solucionado a través de un cliente/servidor VNC (yo suelo usar UltraVNC). Pero no siempre quiero o puedo conectarme.
Sin ir mas lejos, el otro día me surgió la necesidad de que en un cierto momento se ejecutara una pequeña aplicación de aviso, a modo de alarma remota.
Podía desarrollado una aplicación cliente/servidor con mi viejo Visual Basic 6, pero no tenia tiempo para nada… y menos para “flipar” con una aplicación así (sinceramente, creo que nadie se daría cuenta de ello y ni siquiera se valoraría ese trabajo).

– “Bien… solo necesito arrancar un misero ejecutable…”
– “Ni siquiera necesito interactuar con el proceso remoto…”
– “Tiene que haber algo…”
– “Seguro que tiene que haberlo…”-
– “Estoy cansado de usar ‘tasklist’ o ‘taskkill’ para ver y matar procesos en maquinas remota…”
– “Tiene que haber algo similar…”

Y di con la respuesta: PsTools de SysInternals (ahora Windows Sysinternals)

PsTools es un paquete de herramientas de sistema avanzadas creado por Mark Russinovich y Bryce Cogswell.
http://technet.microsoft.com/es-ar/sysinternals/default.aspx
http://technet.microsoft.com/es-es/sysinternals/bb896649.aspx

Como se puede ver en los enlaces anteriores, estas herramientas aunque sean pocas son lo suficiente, en cuanto a cantidad y potencia, como para permitirnos realizar operaciones relativamente complicadas y remotas de una forma muy sencilla.

Nota: Decir que son pocas las herramientas que viene en el paquete PsTools, pero si urgas un poco en la pagina http://technet.microsoft.com/es-ar/sysinternals/default.aspx encontraras que la familia de herramientas no es tan corta.

Pero eso si, siempre en linea de comandos. (Mas de 20 años de delante de un pantalla y no pierdo de vista esa pantalla de comandos DOS, y que dure! jejeje)
Apesar que trabajemos en la linea de comandos podemos utilizar estas herramientas con nuestro VB6. Con un simple “Shell” es mas que suficiente.

A modo de resumen:

Las herramientas incluidas en PsTools son:

PsExec – Ejecución remota de procesos.
PsFile – Muestra remota de los ficheros abiertos.
PsGetSid – Ver el SID del ordenador o de un usuario.
PsInfo -Lista de información acerca del sistema remoto.
PsKill – Matar procesos por nombre o ID del proceso.
PsList – Lista información detallada acerca de los procesos.
PsLoggedOn – Ver quien esta conectado (logged) en local o a traves de los recursos compartidos.
PsLogList – Volcado de registros de eventos.
PsPasswd – Cambio de contraseñas de cuentas.
PsService – Vista y control de servicios.
PsShutdown – Apagar o reiniciar una computadora.
PsSuspend – Suspender o recuperar (resume) procesos.

Tenemos que tener en cuenta que para alguna herramientas se requiere que este habilitado por defecto el recurso admin$ y/o el servicio de registro remoto activo.

La instalacion de estas aplicaciones, como cualquier otra de DOS, seria donde uno desee. Personalmente yo prefiero instalarlas en “C:\Archivos de programa\PsTools\“.

Se instalan en local, es decir en el PC que va a producir el eventos (si buscaramos una similitud con un VNC, se instalaria en el PC cliente, en el que se conecta).

Por otro lado, cuando se ejecuta por primera vez cualquiera de las aplicaciones, se muestra un cuadro de confirmación de los términos de licencia (“SYSINTERNALS SOFTWARE LICENSE TERMS“). No olvides realizar una primera ejecución de prueba para pulsar “Aceptar”.

El código de VB6 para ejecutar una aplicación, en este caso “Carabu”:

Shell strL_Path_PsTools_01 & "psexec.exe \\MAQ001 -u MyDominio\Administrador -p MyPassword -i ""C:\Archivos de programa\Carabu\Carabu.exe"" ALERTA 3342"

Explicación:

Shell (Función): Ejecuta un programa ejecutable y devuelve un tipo Variant (Double) que representa la identificación de la tarea del programa si se ha ejecutado con éxito, en caso contrario devuelve cero.

Sintaxis:

Shell(pathname[,windowstyle])

strL_Path_PsTools_01: Variable de texto local que utilizo para almacenar la ruta (path) de directorio donde tengo instaladas, localmente, las herramientas PsTools.

A continuación le siguen los parametros de PsExec:

Maquina en la que se ejecuta el proceso: “\\MAQ001”.

Usuario y contraseña: “-u MyDominio\Administrador -p MyPassword”

Proceso/aplicación a ejecutar: En este caso mi aplicacion trabaja con parametros (ALERTA 3342).

Como se puede ver escribo la ruta completa y local de “Carabu.exe”. Eso es porque al conectarnos a MAQ001 mediante PsExec.exe conseguimos es una conexión tal que es como si estuvieramos en local.

Si a PsExec lo acompañamos de CMD podríamos llegar a hacer un DIR de la MAQ001 como si estuvieramos in-situ. Pero eso si, si ejecutamos una aplicación, la interacción con ella es casi imposible. Tomad eso como una forma de ejecutar, o mas bien, arrancar un programas.

P.D.: Siento haberme enrollado tanto para tan pocas lineas de provecho 😉

Anuncios

Acerca de Robert Ale
Soy yo un simple tipo que quiere estar en la red... aunque no se si lo conseguiré algún día...

12 Responses to Ejecucion remota – PsExec un remedio facil y barato (by PsTools)

  1. David says:

    y pq no instalar un servidor ssh en tu máquina de casa? después con el cliente ssh te conectas de forma segura estés donde estés y ya esta.

    Con windows no lo he hecho nunca pero seguro que hay paquetes libres que te permite hacerlo.

    • Robert Ale says:

      Hola David,

      SSH en Windows lo hay y te seguro que funciona, pero no se si de la manera que lo conseguimos con PsExec (PsExec es muy sencillo y no se necesita instalacion).

      Explicaba una manera sencilla de ejecutar la aplicacion X en PC1, que esta instalada en el PC1, desde el PC2. Todo de una manera muy sencilla y de andar por casa (pero con ciertas garantias).
      Y a la vez aplicado al VB6.

      Gracias y Saludos!

  2. Jesus says:

    excelente aporte…tambien soy defensor de las viejas tecnologias…si sabes de compus, Ubuntu o DOS..

    • Robert Ale says:

      Muchas gracias Jesús,
      Las cosas buenas no deberían cambiar. Aún tengo algun batch ejecutando en W7. jeje

  3. naglfarjv says:

    psexec me ha salvado de mucho trabajo, ya que genere un archivo con el listado de maquinas a interactuar y luego otro archivo con las lineas de comando que quiero realizar (en este caso instalar un parche de cambio de hora de windows) todo lo hizo de forma silenciosa y el usuario no se dio ni cuenta de lo que paso ;)… lo unico fue darse el tiemo de encender todos los equipos pero fue lo de menos… simplemente genial 😉

    • Robert Ale says:

      Bravo por ti!!!
      Para cosas así viene perfecto!
      Mucha gracias (por la parte que me toca)!

      • fran says:

        Estoy interezado en aprender a manejar pstools, ya se como instalar un software de una maquina a otra, se tambien como abrir cosas en la otra maquina. Solicito saber como Desistalar software de la otra maquina remotamente sin que el usuario se de cuenta.

        y si ademas me envian otras cosas relacionadas me sirven para mejorar mis practicas laborales.

        Gracias.

  4. jonathan canales says:

    quisiera saber como puedo instalar aplicaciones con psexec ya que es necesario para mi trabajo puesto que realizo las instalaciones de un agente llamado ta4d que se utiliza en ibm

    • Robert Ale says:

      Hola!
      Desconozco ese agente del que hablas.
      Pero te puedo comentar que he realizado alguna experiencia con psexec tanto en ejecución como instalación todo tiene peros.
      Los peros son:
      – Si ejecutar una aplicación de consola, ejecutando un “cmd” remoto es muy posible que tengas éxito. Ya que la consola en remoto se puede manejar bastante bien.
      – Si ejecutas una aplicación windows (con ventanitas, etc… -incluidas ventanas de consola-) puede que tengas problemas ya que no veras la ventana (la interfaz de la aplicación) y por tanto no podrás manejarla.

      Te pongo un ejemplo, yo utilizo psexec para ejecutar en una maquina remota una aplicación que he hecho en visual basic 6. Pues yo la ejecuto pero soy incapaz de ver la interfaz de la aplicación. Para ver esa interfaz debería utilizar una aplicación de escritorio remoto estilo VNC, RDP, etc…
      Aunque en realidad me basta con que se ejecute, no necesito verla, pero hay esta el “pero” de psexec.

      Espero que te haya ayudado un poquito.

      Saludos y gracias por leer este blog!

  5. John says:

    ¿Cómo es en Windows 10 ahora?

    • Robert Ale says:

      Hola John,
      Creo que funciona parecido aunque deshabilitando algunas seguridades.
      Aunque no te lo puedo asegurar, no lo he podido probar con profundidad.
      Saludos,
      Robert Ale

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: