Google EL TIPO DE INFORMATICA: Consola
Mostrando entradas con la etiqueta Consola. Mostrar todas las entradas
Mostrando entradas con la etiqueta Consola. Mostrar todas las entradas

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, 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.

miércoles, 20 de febrero de 2013

Programar Backups Routers Cisco

Regularmente hago copias de la conflagración de los Routers de mi red, lo hago copiando la "running-config" a un archivo de texto vía TFTP con el comando "copy running-config tftp:". En estos dias pense "mm, seguro que debe haber una forma de programar esto, alguna especie de cron", y efectivamente, se pueden programar tareas en los equipos Cisco con el comando Kron. El procedimiento es bastante sencillo,  primero se crea una lista de los comandos que queremos ejecutar y luego se especifica cuando se realizara esta tarea creando un "ocurrence". Bien, lo primero que necesitaran es un servidor TFTP, les recomiendo este. Luego que tengan su TFTP server funcionando, se logean a su Router para configurar el Kron. Una vez estén dentro, crearemos la lista de comandos que queremos ejecutar:

Router(config)#kron policy-list NombrePolitica

Donde "NombrePolitica" es el nombre que le daremos al listado que estamos creando. Presionamos enter y como podremos ver en el Promp, estaremos dentro del "Policy-list" que acabamos de crear. Aquí entonces agregaremos los comandos o acciones que queremos que se realicen automaticamente, en nuestro caso, sera copiar la configuración del Router al servidor TFTP. Ejecutaremos entonces lo siguiente:

Router(config-kron-policy)#cli sh run | redirect tftp://IP-TFTP-SERVER/nombre-archivo.cfg

luego:

Router(config-kron-policy)#exit

En la primera de las 2 lineas anteriores, iniciamos escribiendo "cli" y luego escribimos "sh run", como saben este comando mostrara la configuracion actual del router. Luego agregamos " | redirect tftp://ip-tftp-server/archivo.conf", lo que hacemos con esto es tomar la salida del comando anterior y redireccionarla a nuestro TFTP server. Como se imaginaran tendran que sustituir "IP-TFTP-SERVER" por la dirección IP de su servidor TFTP, luego escriben el nombre del archivo que se creara con la conflagración del router. Esto sera un archivo de texto, pueden ponerle o no extensión, en mi caso prefiero ponerle ".cfg". Como en este caso solo queremos programar la copia de la configuración, salimos de la edición de la lista con la segunda linea: "exit". En caso de que quieran programar otros comandos, deben tener pendiente que kron no soporta comandos interactivos, o sea, comandos que necesiten alguna acción o respuesta del usuario. Ya tenemos el listado de las acciones que realizara kron, ahora tenemos que indicarle cuando las realizara. Para esto ejecutamos el siguiente comando:

Router(config)#kron occurrence Nombre-ocurrance at 23:00 Sun recurring
luego:

Router(config-kron-occurrence)#policy-list NombrePolitica

En las lineas anteriores creamos el "occurrence" con el comando "kron occurrence", a este tambien le asignaremos un nombre que no tiene necesariamente que coincidir con el listado que creamos anteriormente. Luego especificamos el horario en que se ejecutara, en el caso de este ejemplo correra a las 11 de la noche de cada Domingo (23:00 Sun), como queremos que estas acciones se realicen recurrentemente agregamos al final "recurring", y presionamos "enter". Como pueden ver, el promp cambiara nuevamente indicando que estamos dentro de la configuracion del "occurrence". Aqui entonces indicaremos el listado que creamos anteriormente con el comando "policy-list NombrePolitica", y que como se imaginaran tienen que remplazar "NombrePolitica" por el nombre que le hayan puesto al listado (Policy-list) que crearon al inicio. Con esto ya tenemos nuestra "tarea" programada en nuestro router o switch. Podemos confirmar o verificar que se haya programado correctamente con el siguiente comando:

Router#sh kron schedule

Con esto veremos la fecha próxima en que se realizara la tarea que acabamos de programar. Bueno, hasta aqui este post, el primero del 2013, y como siempre espero que les haya sido de utilidad. En caso de que no hayan entendido mi explicación pueden leer mas sobre esto en esta pagina.

lunes, 26 de abril de 2010

Correr Aplicaciones como Servicios en Windows Server 2003

Recientemente en el trabajo se me presento el siguiente caso: Debia instalar en uno de los servidores un programa que usarian un grupo de usuarios, este programa revisaria periodicamente un sitio FTP y si habia algun archivo nuevo lo descargaria a un determinado folder, con el que los usuarios luego trabajarian. El problema es que el sistema con el que trabajarian los usuarios se a traves Terminal Services, y el programa que alimentaria a este sistema a traves de la descarga de archivos FTP no estaba diseñado para trabajar como servicio, lo que significa que cada usuario debia iniciar la aplicacion FTP una vez logeado al servidor.

Bueno, no es tan problematico el hecho de que los usuarios tengan que iniciar ellos mismos esa aplicacion, el problema es que si 15 usuarios se logeaban al servidor e iniciaban la aplicacion, tendria 15 instancias de la misma aplicacion corriendo en el servidor de Terminal Services, y todos haciendo la misma tarea. La solucion: hacerlo correr como un servicio, asi los usuarios no tendrian que lidiar con abrir la aplicacion [mientas menos hagan los usuarios en el servidor mejor] y tendria una sola instancia de la aplicacion corriendo. Para hacer esto, utilizamos los comandos INSTSRV.EXE y SRVANY.EXE, ambos incluidos en el Windows Server 2003 Resource Kit Tools. Instsrv.exe crea o remueve servicios en el sistema y Srvany.exe nos permite correr las aplicaciones como servicio. Para crear entonces nuestro nuevo servicio ejecutamos:

ruta-al-comando-INSTSRV.EXE Mi Servicio ruta-al-comando-SRVANY.EXE

Donde "ruta-al-comando-instsrv.exe" es, como ya se habran imaginado, la ruta donde se encuentra dicho comando. Claro, esto tenemos que especificarlo en caso de que no hayamos incluido ese comando comando en la variable del sistema "PATH". Luego escribimos el nombre que queremos dar a nuestro nuevo servicio ("Mi Servicio"). Y por ultimo la ruta hacia el comando "srvany.exe". Por ejemplo, supongamos que llamaremos a nuestro nuevo servicio "Sftp", el comando seria de esta forma:

C:\Program Files\Windows\windows Resource Kits\Tools\instsrv.exe Sftp C:\Program Files\Windows\windows Resource Kits\Tools\srvany.exe

Con esto hemos creado nuestro servicio, ahora debemos indicar en el registro la ruta hacia la aplicacion. Para esto abrimos en editor del registro (regedit.exe). Y nos movemos hacia la siguiente clave del registro:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\

Aqui buscamos la clave correspondiente al servicio que acabamos de crear, de acuerdo a este ejemplo debe llamarse "Sftp". Una vez estemos sobre esta clave, crearemos una nueva sub-clave haciendo clic derecho encima de "Sftp", moviendonos hacia "New" y luego seleccionando "Key", a la que renombraremos "Parameters". Hacemos clic derecho nuevamente encima de "Parameters", nos movemos encima de "New" y seleccionamos "String Value", a esta estrada la llamaremos "Application". Esta clave del registro sera la que indicara la ruta hacia el ejecutable de la aplicacion que queremos correr como servicio, asi que haremos doble clic enicima de "Application" y escribiremos la ruta hacia nuestro ejecutable, por ejemplo, C:\Program Files\Sftp\Sftp.exe".

Windows Regedit

El grafico anterior muestra los cambios dentro de la clave del registro correspondiente a nuestro nuevo servicio. Una vez hemos hecho estos cambios, solo nos resta iniciar nuestro servicio, para esto nos vamos a la consola de administracion de servicios (podemos acceder ejecutando services.msc) e iniciandolo como cualquier otro servicio (clic derecho encima del servicio y seleccionando "start").

Consola de Servicios Windows Server

Ya con esto tenemos nuestra aplicacion corriendo como servicio. Espero que esta informacion les haya sido de utilidad. Hasta el Proximo!

domingo, 7 de febrero de 2010

Manejando los Servicios de Windows desde la consola con Sc

Vamos a hacer una pequeña pausa en la instalación de nuestro “Proxy Linux con Autenticación en Active Directory” del que hemos estado hablando en los últimos 3 post, y vamos a ver una utilidad de Windows que nos permite manejar los servicios de este. Y cuando digo "manejar" no me refiero a solo iniciarlos o detenerlos como hacemos con el comando "net start" y "net stop", sino también a listar todos los servicios, modificar su forma de inicio e incluso modificar la acción a tomar en caso de que el servicio presente algún error y hasta la descripción del servicio, en fin, todo lo que podemos hacer con los servicios desde la consola grafica (services.msc), pero desde una ventana de comandos.

SC es un comando utilizado para comunicarnos con el administrador de servicios, lo que nos permite manejar los estados de los servicios rápidamente. También tiene la ventaja de poder integrarlo en scripts. SC contiene también una serie de subcomandos, los cuales se utilizan dependiendo del tipo de acción que se realizaran en el servicio. Para ver el listado ejecutamos “sc /?”, al lado de los subcomandos veremos una descripción de lo que hace el comando.



Ejemplos de SC
Vamos a ver ejemplos de algunas de las funciones que podemos hacer con “Sc”. Vamos a empezar con el uso más simple, iniciar o detener un servicio. Para este ejemplo utilizaremos el servicio “Spooler”, para detenerlo utilizando “Sc”, ejecutamos:

C:\> sc stop spooler
Y si queremos iniciarlo:

C:\> sc stop spooler
También con “Sc” podemos conseguir el listado de los servicios de nuestro sistema y sus estados actuales, para lo utilizamos:

C:\> sc query
Esto nos devolverá el siguiente resultado:

Como pueden ver, en este listado nos aparece el nombre del servicio (Service_Name) y, digamos, el nombre completo del servicio o “Dsiplay_Name”. Para trabajar con SC, usaremos el nombre del servicio o “Service_Name”. Podemos también conseguir el estado de un servicio en particular usando, por ejemplo, “sc query spooler” en caso del servicio Spooler. También podemos exportar esta lista de servicios a un archivo .txt usando: “sq query > lista.txt”. Otro uso de “Sc” es cambiar la forma de inicio del servicio, o sea, si queremos hacer que el servicio inicie al bootear el equipo, hacemos:
 
C:\ sc config spooler start= auto
 
Bueno, creo que con esto ya tienen una idea de lo que pueden hacer con “Sc”, esto es solo lo básico que podemos hacer. Espero que esto les haya sido de utilidad, en el próximo post volveremos al tema de prepara el Web Proxy con Squid, asi que hasta el próximo!

viernes, 21 de agosto de 2009

Configuracion TCP/IP a traves de linea de comandos usando "Netsh" (Windows)

En ocaciones necesitamos hacer modificaciones a la configuracion TCP/IP de un equipo (local o remotamente) o un grupo de equipos, como por ejemplo, cambiar la dirección del DNS, Gateway, Subnet Mask, etc, tambien puede darse el caso que necesitemos cambiar, agregar o eliminar alguna regla en el Firewall de Windows, ya sea para abrir un determinado puerto o cerrarlo. Todas estas configuraciones podemos realizarlas desde la comodidad de nuestra ventana de comandos (para los que nos gusta trabajar desde la consola) utilizando la herramienta "NETSH". Netsh (o "Network Shell") se utiliza a través de la linea de comandos y permite visualizar y modificar la configuracion de red de un equipo local o remoto y viene integrada en los sistemas operativos Windows a partir de Windows XP. Podemos utilizar Netsh en scripts que al ser ejecutados modifiquen la configuracion IP de un determinado equipo o grupo de equipos.


A continuación algunas de las tareas básicas que podemos hacer con Netsh:

* Configurar IP estatica: En este ejemplo le asignaremos una dirección IP estática a la interface de red "Local Area Connection", la IP que le asignaremos sera "192.168.1.10", subnet mask "255.255.255.0", Gateway "192.168.1.1" y la metrica "1"



netsh interface ip set address "local area connection" static 192.168.1.10 255.255.255.0 192.168.1.1 1

* Configurar DNS primario: En el ejemplo anterior solo agregamos la direccion IP del equipo, en este agregaremos el DNS primario (192.168.1.2) para esta conexion:

netsh interface ip set dnsserver "Local Area Connection" static 192.168.1.2 primary

* Configurar IP usando DHCP: En este ejemplo configuraremos la tarjeta de red para que reciba de la configuracion IP desde un servidor DHCP.


netsh interface ip set address name="Local Area Connection" source=dhcp

* Abrir puertos en el Firewall: En este ejemplo configuraremos el Firewall de Windows para que permita conexiones VNC al equipo en el cual estamos haciendo los cambios, este protocolo utiliza el puerto TCP 5900:
netsh firewall add portopening TCP 5900 "VNC"


Esta es la forma basica y mas permisiva de abrir un puerto en el Firewall ya que permite acceso a cualquier equipo establecer una conexion con este equipo a traves de este puerto. Podemos crear una regla mas detallada en el Firewall tambien con Netsh especificando un rango de direcciones IP que podrán conectarse a este equipo (generalmente el rango IP de la red interna), podemos también especificar el protocolo a usar (TCP o UDP). Para esto usamos el siguiente comando:

netsh firewall add portopening protocol=tcp port=5900 name=VNC mode=enable scope=custom addresses=192.168.1.0/255.255.255.0


Estos son solo usos básicos de Netsh, si quieren mas información acerca de este y que mas se puede hacer con el visiten este link. Es muy útil también utilizarlo junto con PsExec, así podemos conseguir una consola remoto en un equipo y ejecutar desde esta los comandos de Netsh. Bueno, espero que esto les sea de utilidad y que hayan perdido su tiempo en este Blog, nos leeremos luego!!.

lunes, 17 de agosto de 2009

Consola remota en Windows usando "PsExec"

Voy a estrenar este blog hablando de una de las herramientas que utilizo a diario: Psexec. Psexec es una herramienta gratuita que pertenece al paquete de aplicaciones "PSTOOLS" desarrollado por Mark Russinovich de Sysinternals. PsExec es una pequena aplicaicon que permite ejecutar comandos en uno o varios equipos remotos de una manera sencilla y recibir la salida de este comando en nuestra pantalla, por ejemplo, podemos usar PsExec para enviar el comando "ipconfig " hacia un equipo remoto y veremos en nuestra pantalla la configuracion IP del equipo al cual le enviamos este comando. Claro esta, para ejecutar comandos en un equipo remoto necesitamos tener privilegios administrativos en dicho equipo. Una de sus funciones mas importantes es la de permitir una consola de comandos interactiva, o sea, podemos tener un "command promp" (o shell) del equipo remoto e interactuar con este desde nuestro equipo, de esta forma podemos ejecutar cualquier comando como si estuviesemos en frente del equipo. Para esto, seguimos los siguientes pasos:

1) Primero descargarmos PsExec desde este enlace, creamos una carpeta en el directorio raiz del disco y la llamamos "pstool" (C:\pstool).

2) Abrimos en nuestra computadora una ventana de comandos o "command promp" (haciendo clic en start --> run , escribimos "cmd" y presionamos "enter") y nos movemos a la carpeta que creamos anteriormente (C:\pstool).

3) Desde aqui ejecutamos: "psexec \\equipo-remoto -U usuario-administrador -s cmd.exe" y presionamos "enter", al hacer esto se nos pedira escribir el password correspondiente al
usuario que especificamos, lo escribimos y presionamos "enter" y con esto tendremos nuestra consola.

En el comando anterior "\\equipo-remoto" corresponde al nombre o direccion IP del equipo al cual nos conectaremos, la option -U la usamos para especificar el usuario que usaremos para ejecutar el comando en el equipo remoto, por lo que "usuario-administrador" corresponde a un nombre de usuario con privilegios administrativos en el equipo remoto. Si estamos en un dominio Windows y tu nombre de usuario tiene privilegios administrativos sobre el equipo remoto entonces no es necesario incluir la opcion "-U". Por ultimo con la opcion "-s" especificamos el comando que queremos ejecutar en el equipo remoto, en este caso una ventana de comandos (cmd.exe).

Este programa trabaja sobre los puertos TCP 139 y 445 y UDP 137 y 138 (Windows SMB), asi que si se esta corriendo algun Firewall en el equipo remoto (como Windows Firewall) se deben abrir estos puertos para lograr ejecutar el comando. Generalmente cuando se esta trabajando en LAN estos puertos estan abiertos para permitir compartir archivos entre las computadoras. Teniendo una consola en un equipo remoto podemos hacer cualquier cosa en este, como chequear los procesos que están corriendo, cerrar aplicaciones o procesos, reiniciar o apagar el equipo, etc. Tambien es posible modificar las reglas del "Windows Firewall" (abrir o cerrar algun puerto) utilizando el comando de Windows "netsh", el cual tambien puede ser utilizado para modificar la configuracion TCP/IP desde la ventana de comandos. Hablare de "netsh" en un proximo post. Creo que es todo por ahora, espero que este post les haya sido de utilidad y que PsExec les sea de tanta ayuda como lo ha sido para mi.