Google EL TIPO DE INFORMATICA

miércoles, 10 de diciembre de 2014

Comandos Basicos para VMware ESXi

En muchos casos es mucho mas rápido (y fácil) realizar algunas operaciones vía comandos que realizarlos mediante interface gráfica, otras veces hay algunas acciones que no se pueden realizar vía la interface gráfica, como por ejemplo, en el caso de VMWare no tenemos la opción apagar forzosamente una maquina virtual (o "force stop") en Vsphere Client. Por eso les dejo aquí algunos comandos para VMWare ESXi 4.1 y 5 que creo les podrían ser de utilidad, claro deben tener activado el acceso ssh en sus servidores, si aun no lo tienen pueden ver aquí como hacerlo.

  • Listar las Maquinas Virtuales
Para ver el listado de las maquinas virtuales creadas en el host ejecutamos:

vim-cmd vmsvc/getallvms

Esto nos presentara el listado de las maquinas virtuales creadas con el ID de las maquinas (vmid) que se utilizara en los siguientes comandos, el nombre de la VM, la ruta del archivo y el DataStore donde se encuentra, el tipo de Sistema Operativo (el que se indica cuando se crea la VM) y la version de la maquina virtual.

  • Ver status de una VM
Si queremos conocer si una de las maquinas virtuales que listamos con el comando anterior esta encendida o apagada, ejecutamos:

vim-cmd vmsvc/power.getstate <vmid>

Donde como ya imaginaran, remplazaremos  mid
> por el ID de la maquina virtual que queremos verificar.

  • Encender una VM
Si una de las maquinas virtuales esta apada, podemos encenderla utilizando:

vim-cmd vmsvc/power.on <vmid>

  • Apagar una VM
Si queremos apagar "amablemente" una de las maquinas virtuales, o sea, pidiéndole decentemente que por favor se apague, podemos usar el siguiente comando:

vim-cmd vmsvc/power.shutdown <vmid>

Si de la forma amable no responde, ejecutamos:

vim-cmd vmsvc/power.off <vmid>

  • Forzar Apagado de una VM
Si al intentar apagar una maquina virtual, ya sea usando el Vsphere Client o usando los comandos anteriores, la maquina no responde y no llega a apagarse, podemos forzar el apagado usando la utilidad esxcli. Primero necesitaremos el "WorlNumber" de la maquina que queremos apagar, ejecutaremos:

Para ESXi 5:
esxcli vm process list

Para ESXi 4.1:
esxcli vms vm process list


Esto nos arrojara un listado con las VMs que tenemos actualmente y también veremos el "Worl ID" de cada una. Cuando hayamos identificado el que corresponde al equipo que queremos forzar a apagar ejecutamos entonces:

Para ESXi 5:

esxcli vm process kill --type=force --world-id=<WorldNumber>

Para ESXi 4:

esxcli vms vm process kill --type=force --word-id=<WorldNumber>


  • Informacion del Hardware del Host
Para ver la información de hardware del host donde tenemos instalado VMWare ESXi, como la cantidad de procesadores y tipo, la cantidad de memoria RAM que soporta, la cantidad de slots que de memoria que tiene el Motherboard, el tamaño de cada DIMM de memoria, entre otros, podemos usar el siguiente comando:

smbiosDump

Este comando nos traerá una extensa lista de todos los componentes del equipo, esto es muy util si, por ejemplo, están planeando un upgrade de memoria para su servidor y quieren saber cuando les soporta, cuantos DIMMs tiene instalados y cuantos slots tienen disponible, etc.

Información Capacidad Memoria RAM  Soportada
Como ven esto nos muestra información del tipo de memoria que tenemos en el equipo y la cantidad que soportaría. Bueno como siempre espero que esto les sea de utilidad, hasta el próximo!

miércoles, 17 de septiembre de 2014

Permitir conexiones FTP a puertos Alternos a traves de IPTables

Hace un tiempo les hablaba en este post sobre como configurar IPTables para permitir conexiones a un servidor FTP que se encuentre en la red y les hablaba sobre los modos "Pasivo" y "Activo" de FTP. Les decía que era necesario activar los modulos ip_conntrack_ftp y ip_nat_ftp (usando modprobe), pero que pasa si el servidor FTP lo tenemos configurado para escuchar en un puerto diferente al 21? En ese caso, no basta solo con modificar las reglas DNAT en IPTables, también hay que indicarle a los módulos que cargamos que estaremos utilizando puertos diferentes al standart.

Para indicar esto, solo tenemos que crear un archivo llamado conntrack.conf dentro de /etc/modprobe.d, dentro de este indicaremos el puerto en el que escucha nuestro FTP. Supongamos que configuramos el servidor FTP para que escuche en el puerto 2221, en contenido del archivo conntrack.conf seria:

options ip_conntrack_ftp ports=2221

Guardamos nuestro archivo y listo. Con esto y las reglas de IPTables configuradas, ya podremos redirigir el trafico hacia nuestro servidor FTP. En caso de que necesiten saber como configurar las reglas pueden revisar este post y claro, cambiar el puerto "21" por el puerto en que escucha su servidor. Bueno, este fue corto, como siempre espero les haya sido de utilidad.

miércoles, 30 de julio de 2014

Exportar/Importar Permisos NTFS de Carpetas y Subcarpetas usando ICACLS

Aquí les tengo un corto post sobre algo que (como prácticamente todo lo que les escribo aqui) tuve que utilizar recientemente. Supongan que tienen una carpeta que contiene otras subcarpetas y archivos, cada subcarpeta tiene permisos específicos al igual que los archivos, y con el tiempo se han ido agregando otros usuarios a esta carpeta con diferentes privilegios, y que un día, este folder se borra (o lo borran) o lo tienes que copiar a (o restaurar desde) una unidad, por ejemplo FAT32 donde se perderán todos los permisos que se habían configurado. Normalmente esto no seria mucho problema, pero si la carpeta es usada por muchos usuarios y contiene muchos subfolders dentro, es posible que pases mucho tiempo determinando que usuario tenia acceso a cual folder, si tenia permiso de lectura o de escritura, si podía escribir pero no podía borrar, en fin determinar nuevamente todos los permisos NTFS y configurarlos para cada subfolder. Para estos casos podríamos exportar los permisos de la carpeta principal y de todas las subcarpetas y su contenido que contengan a un archivo .txt, el cual podremos luego importarlo nuevamente, ambas cosas usando el comando icacls de Windows.

El comando Icacls nos permite visualizar y modificar los permisos (o DACLs - discretionary access control lists- ) de un archivo o carpeta. El formato o notación en que están definidos estos permisos es SDDL (Security Descriptor Definition Lenguage), esta notación se vería mas o menos de esta forma ejecutando icacls a la carpeta "Program Files" y al archivo "C:\Windows\System32\cmd.exe":

Salida comando icacls.exe

Como ven el comando nos muestra los grupos o usuarios que tienen permisos definidos y el nivel de acceso que tienen sobre la carpeta o archivo, por ejemplo (F) para Full Permitions, solo lectura se expresaría como (R), lectura y ejecución como (RX), escritura como (W). También muestra si los permisos son heredados de folders superiores. Para mas detalles sobre esta notación pueden visitar este link.

Y bien, volviendo a lo que les mencione arriba, si quisiéramos exportar los permisos de una carpeta y sus subcarpetas, utilizaríamos:

C:\> icacls D:\MiFolderdeDatos /save permisosfolder.txt /t

Donde "D:\MiFolderdeDatos" es la carpeta de la cual quiero exportar los permisos, "/save" es la opción para indicarle a icalcs que queremos guardar estos permisos en el archivo "permisosfolder.txt", y con la opción "/t" le indicamos que queremos también los permisos de los subfolders de nuestra carpeta.

Ahora, una vez ya tenemos nuevamente nuestra carpeta con todos los datos restaurada (y claro, en una unidad NTFS), podemos importar todos los permisos, usando ahora:

C:\> icacls D:\ /restore permisosfolder.txt

Como habrán notado, ahora para restaurar los permisos no necesito incluir la carpeta, solo indico la ruta raiz, el sea el disco donde se encuentra el folder (D:\). Esto porque icacls al momento de exportar los permisos utiliza ruta relativa, o sea, por cada entrada de permisos solo escribiría, por ejemplo "MiFolderdeDatos\archivo1.doc" ; "MiFolderdeDatos\carpeta1", así que no necesitamos especificar la carpeta a restaurar. Y bien, como les dije era un post bien corto, espero que esto les sea de ayuda en algún momento, como lo fue para mi.

Hasta el Próximo!

lunes, 26 de mayo de 2014

Importar Datos en Active Directory desde un archivo de Texto con DSQUERY y DSMOD

Quizas les haya pasado esto, necesitan modificar la información o propiedades en Active Directory de multiples usuarios, por ejemplo, agregar la dirección de correo, números telefónicos, agregarlos a un grupo o cualquier otra información del usuario. Esto mismo se me presento hoy, tenia que agregar el código de empleado a todos los usuarios, se le iba a agregar en el campo "Description". Me dieron un archivo de Excel con la lista de usuarios y la información que debía agregar. Afortunadamente había una columna con el username del dominio, por lo que era mas fácil asociar la nueva información con active directory.

DSQUERY y DSMOD

Bien, la manera mas fácil que pensé para hacer esto fue utilizar los comandos "DSQUERY" y "DSMOD", estos comandos permiten como seguramente ya han intuido, hacer búsquedas de en Active Directoty (dsquery), ya sea usuarios, computadoras, etc., para y modificar parámetros (dsmod) como los que les mencione mas arriba (correo, nombre usuario, password, etc.). Para utilizarlos tendrian que instalar "Remote Server Administration Tools". Si queremos por ejemplo  listar todos los usuarios del dominio usaríamos "dsquery user", podemos también buscar todos los usuarios de un OU especifico, supongamos que queremos los usuarios del OU "Contabilidad" y que nuestro dominio Active Directory se llama "midominio.local", usaríamos esto:

C:\>dsquery user ou="Contabilidad,dc=midominio,dc=local"

Con esto tendríamos el listado de usuarios de este OU, lo bueno es que ahora podemos tomar la salida de este comando y pasárselo a DSMOD para cambiar los parámetros o atributos que necesitemos agregar o cambiar. Siguiendo el ejemplo anterior, supongamos que a los usuarios de ese OU queremos modificarles el atributo "Office", lo que hariamos es repeterir el mismo comando anterior, pero agregar un "pipe" al final para dirigir la salida del comando a DSMOD y agregar dsmod user -office "Oficina Principal":

C:\>dsquery user ou=Contabilidad,dc=midominio,dc=local" | dsmod user -office OficinaPrincipal


Así todos los usuarios del OU que indicamos tendrán el atributo modificado, pero ahora viene lo interesante. Volvamos al caso inicial de modificar un grupo de usuarios y agregar o modificar en cada uno un atributo, pero con valores diferentes. Como les dije tenia la lista de usuarios y los atributos que debía agregar, lo que hice fue tomar de este archivo las 3 columnas que me interesaban: username (el del dominio), correo electrónico y código. Lo que haremos sera utilizar este archivo de texto (cvs) con estas 3 columnas y alimentar con cada una de ellas estos comandos. Usaremos también el comando "FOR"  que sera quien leerá el archivo de texto y pasara la información a dsquery y dsmod. El archivo de texto se vería mas o menos de esta manera:

Archivo de Usuarios en formato CVS

Donde como pueden ver tenemos en la primera columna el usuario, en la segunda su cuenta de correo y en la tercera el código del usuario que agregaremos en el campo "Description" de Active Directory. Como ven las columnas están separadas por coma (cvs), lo guardaremos en "C:\usuarios.cvs". Teniendo ya nuestro archivo listo y organizado, podemos hacer una prueba con el comando FOR ejecutando "for /F "tokens=1,2,3 delims=, " %a in (usuarios.csv) do echo %a %b %b" obtendríamos:


Si la salida fue como el gráfico anterior, podemos ahora hacer unos cambios al comando, y quedaría de esta manera:

C:\>for /F "tokens=1,2,3 delims=, " %a in (C:\usuarios.cvs) do dsquery user -samid %a | dsmod user -email %b -desc %c

Vamos a ver entonces lo que pasa aqui. Si tienen nociones de programación estarán familiarizados con el comando FOR, lo que estamos haciendo es "iterando" sobre el archivo "usuarios.cvs" y por cada linea ejecutaremos una acción. El comando "For" lo que hará es asignar el contenido de cada columna en una linea a una variable, en este caso la primera columna de la primera fila (el nombre de usuario) se asignara a la variable "%a", la segunda (el correo) a la variable "%b" y la tercera (el código) a la variable "%c" (pero como ven solo especifique %a en el comando, ya el sabe que las otras columnas las almacenara en variables nombradas con la letra siguiente). Luego indicamos el parámetro "do" del comando for, que es entonces donde especificamos la acción que se ejecutara en cada iteración sobre el archivo, y es aqui entonces donde usamos los comandos "dsquery" y dsmod". Como ven, ejecuto "dsquery user -samid" y le paso como parametro la variable %a a la que FOR ya le ha asignado el valor de "user1" (con "-samid" le indicamos a dsquery que buscaremos en Active Directory por username). Luego hago un "pipe" (|) para redirigir el resultado de dsquery a dsmod, usando "dsmod user -email %b -desc %c". Aqui estamos modificando 2 atributos del usuario al mismo tiempo (email y descripcion) y los valores que le estamos pasando son las variables %b y %c, que FOR ya le asigno los valores "user1@midominio.local" y "00001" respectivamente.

Al presionar enter veremos que se irán ejecutando estos comando uno por uno por cada linea del archivo usuarios.cvs, si encuentra un error en una linea del archivo el error les saldrá en pantalla pero no se detendrá la ejecución, ya que FOR continuara ejecutandose por cada linea del archivo. Bien, con esto hemos importado datos o actualizado información de un grupo de usuarios en Active Directory usando un archivo de texto, espero haberles explicado bien, todo esto tiene mucho sentido en mi cabeza pero a veces la explicación no me sale tan clara :D. Les recomiendo explorar los comando "DSQUERY" y "DSMOD" usándolos con el parámetro  de ayuda "/?", verán todo lo que pueden hacer en Active Directory desde la linea de comandos con ellos y tambien con DSGET y DSMOD. Espero que les haya sido de utilidad!


sábado, 26 de abril de 2014

Creando Symbolic Links en Windows con MKLink

En esta semana se presento un pequeño problema en la oficina. Uno de los programas usado por los usuarios llamaba al Internet Explorer para generar un reporte desde Reporting Services, pero por alguna razón se abría la versión de 64bits del navegador. Esto generalmente no seria problema, si no fuera porque algunos ActiveX solo funcionan en la version de 32bits. Después de probar varias cosas decidí, para no perder mucho tiempo, renombrar la capeta donde se encuentra la versión de 64bits de Internet Explorer ( de "Internet Explorer" a "Internet Explorer64" ) y crear un Symbolic Link en la misma ruta y con el nombre original de la carpeta apuntando a la versión de 32bits que se encuentra en "C:\Program Files (x86)\Internet Explorer", y de esto es que quiero hablarles hoy; de los Symbolics Links en Windows, como crearlos y cuando usarlos.

Un Symbolic Link (o softlink) es algo así como un Shortcut, simplemente es una dirección hacia otro archivo o carpeta, con la diferencia de que el shortcut que creamos en Windows es realmente un archivo de extension ".lnk", mientras que el Symbolic Link es una redireccion hecha a nivel del File System. Esto significa que, por ejemplo, si creamos un shortcut que apunte a la carpeta "C:\Users" lo que crearemos sera un archivo ".lnk" que dentro apunta a la carpeta que indicamos, una aplicación tendría que saber interpretar este tipo de archivos .lnk y generalmente no lo hacen. Windows Explorer si los reconoce y por eso podemos hacer doble clic sin problemas. En el caso de los Symbolic Link, la redireccion la crea el propio File System (NTLM) y les muestra esto a las aplicaciones como carpetas o archivos reales. Estos links podemos también crearlos entre diferentes discos, por ejemplo, podríamos hacer un Symbolic Link en "C:\Datos" que apunte realmente a "E:\Programa\Datos", y todas las aplicaciones verían este link como una ubicación real en el equipo y no como un shortcut. Lo que nos serviría por ejemplo para mover una carpeta de datos de un programa sin tener que hacer alguna configuración en este y que el piense que sigue escribiendo en su carpeta original.

Para crear estos links, usamos en el comando mklink. Lo ejecutamos de la siguiente manera:


mklink /D ruta-donde-se-creara-el-link ruta-donde-apuntara-el-link 

Como ven es muy sencillo de usar, "/D" es la opción que le indica que se creara un Symbolic Link, luego le indicamos donde queremos crear el link seguido de a donde apuntara el link. Este comando requiere elevación de privilegios, así que tendrán que abrir una ventana de comandos (CMD) como Administrador. Para el caso que les mencione arriba, ejecute el comando de la siguiente manera:


Como ven renombre la carpeta de Internet Explorer a "Internet Explorer64" y dentro de esta misma ruta cree un Symbolic Link llamado "Internet Explorer" apuntando a la ubicación de la versión de 32bits. Si hacemos un "dir" aquí veremos ahora que la carpeta "Internet Explorer" es un SYMLINKD:


Y como ven, se nos muestra hacia donde apunta. Bueno, hasta aquí este post, espero como siempre que les sea de utilidad.