miércoles, 10 de febrero de 2010

MSDOS II como manejar el resultado de un comando sin volcarlo a un fichero

Todos conocemos como pasar el resultado de un comando a otro mediante el pipeline (|)

dir navs | find "archivos", nos presenta las líneas del resultado del comando dir que contienen la palabra archivos (1 archivos 207 bytes), sin embargo, si queremos utilizar el tamaño en bytes como una variable en nuestros proceses batch deberíamos volcarlo al un fichero, dir navs | find "archivos" > tam, pra procesarlo posteriormente o ¿no?. Podemos utilizar el FOR para procesar / almacenar los resultados de nuestros comandos

Existe dos casos que pueden interesarnos.

En primer lugar si queremos almacenar el resultado en una variable de nuestro porceso por lotes (fichero .bat). No es posible hacerlo con el comando SEt, ya que almacena literalmente el comando, no el resultado de su ejecución, y lo "lanza" cuando hacemos @echo. |

Sin embargo podemos recurrir al comando FOR. Si aunque parezca un sinsentido en la única opción. Usando el parámetro 'usebackq', el FOR utilizará el resultado de la ejecución, del comando incuido entre `` como entrada a procesar.

En función de lo que se pretenda hacer con el resultado deberemos utilizar los distintos parámetros (Token, delims,..) del FOR.
Asi, para tener en nuestra variable de entorno RUTA, el directorio de trabajo actual, ejecutaremos esta sentecia
Desde un proceso .bat

FOR /F "usebackq" %%i in (`cd`) do Set RUTA=%%i

Desde la línea de comandos

FOR /F "usebackq" %i in (`cd`) do Set RUTA=%i

O si pretendemos mostrar el lsitado de la ramas de una entrada del registro, podemos emplear
Desde un proceso .bat
FOR /F "tokens=1 usebackq delims=" %%i in (`reg query HKLM\SOFTWARE\Clients\StartMenuInternet /s`) do echo %%i

desde la línea de comandos
FOR /F "tokens=1 usebackq delims=" %i in (`reg query HKLM\SOFTWARE\Clients\StartMenuInternet /s`) do echo %i

Rizando el rizo, esta técnica nos permite encadenar varios resultados sin tener que pasar por un fichero de texto.

FOR /F "skip=1 tokens=* usebackq delims=\" %%k in (`reg query "HKLM\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE\shell\open\command"`) do (FOR /F "tokens=3* delims= " %%l in ("%%k") do echo %%l)

Listará las entradas que cuelgan de las entradas de HKLM\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE\shell\open\command

sábado, 30 de enero de 2010

Para abrir una ventada de comandos MS-DOS (cmd) desde el menu de opciones (botón derecho) directamente en un directorio

Para abrir una ventada de comandos MS-DOS (cmd) desde el menu de opciones (poton derecho) directamente en un directorio, hay que crear las siguientes claves de registro (Inicio-> ejecutar -> regedit)

[HKEY_CLASSES_ROOT\Directory\shell\Abrir CMD]
@="Abrir cmd aqui"

[HKEY_CLASSES_ROOT\Directory\shell\Abrir CMD\command]
@="cmd.exe /k cd %1 "


Resulta bastante cómodo si ejecutas con frecuecia CMD

martes, 26 de enero de 2010

Tecnología nostálgica

Aunque parezca obsoleto, la utilicación de procesos bat y de la línea de comandos de MS-DOS (el cms, de los windows), puede sacarnos de mas de un problema.

En este artículo publicaremos algunas rutinas, como ejemplos, para que os sirvan de ayuda si alguna vez os encontrais en algún apuro.

Borrador de ficheros recursivo:
Con estas líneas ser borraran todos los ficheros que "cuelguen" del directorio que se pase como parámetro %1. (muy util para elminar virus persistentes). CUIDADO con el parámetro que se pasa perderás todos los ficheros del l directorio padre y sus hijos, no quiero ni pensar en una ejecución sobre el directorio raiz,

@echo off
if %1'==' GOTO ErrorParam
echo %1
rem elimina ficheros del directorio temporal
attrib -r -h -s -a "%1" /S /D
del /f /s /Q "%1"

goto FIN
:ErrorParam
echo Has olvidado INDICAR EL PATH A VACIAR "Vaciatemporales "
:FIN
rem ********

martes, 29 de septiembre de 2009

Acceso remoto entre 2 equipos conectados por ADSL mediante Remote desktop

Lo primero de todo indicar que este no es el mecanimos mas aconsejable, desde el punto de vista de seguridad, sin embargo su simpleza permite solucionar problemas de forma remota con un mínimo esfuerzo.

Es recomendable "activarlo/desactivarlo" de forma puntual solamente en los momentos en que sea necesario.
Primero debemos configurar el router / cortfuegos (firewall) del equipo al que se quiere acceder remotamente rediriguiendo el puerto 3389, redirigido a la IP (interna) del equipo, para obtener esta IP , lo mas sencillo es abrir una ventana de MSDOS (inicio-> ejectar-> cmd) y teclear ipconfig


Para configurar el router, lo que debemos hacer es entrar por la dirección privada (generalmente 192.168.0.1 0 (vodafone) 192.168.1.1 (telefónica)) mediante un navegador web (internet explorer, Mozilla,...) con la URL: http:\\192.168.0.1. Actualmente casi todos los routers admiten interface web para su configuración.
Es importante buscar y apuntar la IP pública del Router, nos hará falta mas tarde

El interface particualr de cada modelo es variable, os pongo un caso particular.


Si se quiere acceder a varios equipo conectados a la misma red, hay que asignar un puerto distinto (3389, 3390,..) a cada una de las IP, cuando nos conectemos en remoto cada IP estará reerenciada por la IP pública del router y el puerto asignado, separados por (:).

Una vez que tenemos redirigido el puerto a la IP del equipo, hay que configurar el escritorio remoto, en principio basta con marcar la casilla "permitir a el acceso a otros usuarios" de las propiedas avanzadas del equipo.


Sin embargo, dado que estamos abriendo nuestro equipo al mundo exteriror, es recomendable, dar acceso exlusivamente a un susuario que hayamos definido dentro del equipo (Inicio->panel de control -> cuentas de ususario) al que habremos configurado con los permisos que consideremos oportunos y una clave de acceso.


Una vez hechos estos pasos, podemos intentar la conexión desde un equipo remoto. Para ello abrimos la aplicación Conexión a escritorio Remoto (inicio->Todos los programas->accesorios), que nos abrirá una ventana donde se nos solicita un nombre de equipo.

Para ahorranos problemas teclearemos directamente la dirección IP( seguido del puerto asignado si hay varios pcs a controlar configurados), en este caso debemos introducir la IP pública del Router, tendremos que haberla obtenido cuando entramos en el interface de configuración con nuestro navegador WEB.


Al pulsar conectar, nos aparecerá una pantalla ( ya es el equipo remoto) y nos preguntará un usuario y su clave (hay que introducir, el usuario al que hemos dado acceso remoto y su clave)

Si pulsamos el botón de opciones en la ventana de la aplicación de escritorio remoto, nos aparece varias opciones, desde archivar los datos de la conexión para validarno automáticcamente con el usuario y clave introducidos en la IP marcada, cada vez que narranquemos la aplicación hasta, la optimización de la aplicación en función del ancho de banda disponible

En cualquier caso, si el acceso remoto va a ser algo frecuente, lo mas idóneo es crear una VPN. Este será otra taréa a abordar en otro capítulo.