Ejecutar script de Command Manager desde la línea de comandos

Ejecutar Script sin encriptar

Los scripts (.scp) de MicroStrategy Command Manager se pueden ejecutar desde el símbolo de sistema de Windows creando un fichero por lotes (o un shell script si es UNIX) escribiendo el siguiente código:

cmdmgr -n "Nombre Origen Proyecto" 
-u Username -p "Password" 
-f "ubicacion\nombre_fichero.scp" 
-o "nombre_log.txt"
  • cmdmgr o cmdmgr.exe es el programa a ejecutar, Command Manager (si es unix seria mstrcmdmgrw).
  • -n: indica el nombre del origen proyecto.
  • -u: el login que se usa para conectarse.
  • -p: contraseña del usuario (opcional) si no se escribe se entiende que el usuario no tiene contraseña.
  • -f: ubicación del script a ejecutar
  • -o: fichero donde se van a guardar los resultados (opcional)

Si haces la prueba puedes ejecutar cualquier script con el código anterior, pero tiene un gran problema de seguridad y es que todo el mundo que tenga acceso a él podrá ver la contraseña. Ante esto, existen dos soluciones:

  • Quitar el parámetro -p, pero te preguntara la contraseña cada vez que se ejecute.
  • Preparar el script para establecer los datos de conexión internamente y además encriptarlo para que nadie lo pueda visualizar/editar.

Ejecutar Script encriptado

Preparar el script

Crea o edita cualquier script e Command Manager que hayas realizado y escribe en la primera línea el siguiente código:

CONNECT SOURCE "Nombre_Origen_de_Proyecto" USER "Usuario" PASSWORD "Contraseña";

Debajo de esta línea irá las sentencias que quieras ejecutar en el script. En mi caso voy a obtener un listado de los usuarios del grupo everyone. Te debe quedar algo similar a la siguiente foto:

Haz clic en el menú Archivo > Guardar como script codificado

En este otro articulo especifico paso por paso cómo guardar el script codificado y qué consecuencias tiene. Léelo para más información.

Crear fichero por lotes

Como hemos visto anteriormente podemos escribir en la linea de comandos una sentencia con ciertos parámetros para ejecutar el script. Al tener los datos de conexión internamente en este nuevo script, la sentencia cambia y además crearemos un fichero por lotes para que sea del todo automático y seguro.

Crea un fichero de texto y renombralo cambiando la extensión .txt por .bat y escribe el siguiente código adaptándolo a tu instalación:

 "CMDMGR.exe" -connlessmstr -f "ubicacion\nombre_Fichero.scp" -o "nombre_log.txt"
pause

En este código puedes observar varias diferencias respecto al que hemos visto al inicio del articulo. En esta ocasión no hacemos referencia al nombre de usuario ni a su contraseña y le indicamos el parámetro –connlessmstr para que no realice la conexión a la metadata en ese instante. He incluido el comando pause que no es necesario, para comprobar que no falle.

Si ejecutamos el fichero .bat que he realizado de ejemplo (doble clic sobre el fichero o programandolo con el programador de tareas de Windows) se abrirá la siguiente ventana:

Y podemos comprobar el resultado abriendo el fichero de salida que le hemos indicado en el parámetro -o

De esta forma puedes crear un script y ejecutarlo de forma totalmente segura sin que nadie visualice tu usuario o contraseña y totalmente automático.

Escribir un comentario