Archivos de la categoría ‘Uncategorized’

Algunas ocasiones nos encontramos de cara a un problema entre unix y windows, ¿Como copio archivos entre ellos? sino dispongo de un servidor de NFS en windows es decir algunas versiones viejas como 2003 server entre otros, y además quiero hacer una copia calendarizada de ciertos archivos. Nota que el sentido de la copia es de windows a unix estando desde unix, ya que en el otro sentido “podría” ser más sencilla usando algún cliente de ssh, y notese que dije podría, tal vez no, pero bueno finalmente ese no es el caso.

Bueno pues resulta que algunos sistemas como linux disponemos de un cliente de smb el cual nos permite montar a través de cifs como si se tratase de nfs y asunto solucionado. Pero algunos unix como por ejemplo solaris, el cliente de smb(smbclient para ser mas precisos) trabaja como si fuera un ftp, es decir la interfaz de usuario se comporta como un cliente de ftp pero a través de cifs. Dijimos que necesitamos que sea una copia calendarizada, desatendida, automática, o como nosotros queramos llamarle.

Pues yo les prometí que sería de 3 patadas es decir, sencillito.

Personalmente me gusta hacer scripts de manera que sean al estilo unix, es decir que lean datos de la entrada standard y escriban datos a la salida standard por lo que usare el siguiente comando para hacerlo:
FILESLIST=`cat`

¿Y que sucederá cuando ejecute el script?, hay de 2 sopas o le pasamos el listado de archivos por medio de algún comando, por ejemplo: ls
o escribimos directamente en la entrada standard los archivos y cuando terminemos pulsamos ^D
ejemplo: copysmb.ksh
file1
file2
^D

Cuando digo ^D me refiero a la secuencia de comandos control-D No se vayan a confundir.

Para facilitarnos la tarea emplearemos un archivo de texto con las credenciales de la cuenta de windows, el archivo solo para fines didacticos lo pondré en tmp, quedando: /tmp/auth.txt
con el siguiente formato:
username = <value>
password = <value>
domain = <value>

Con ésto ya solo hace falta lo mas facil, por si creían que lo anterior era facil, pues lo que sigue, lo es más.

Es decir tenemos el script completo.

#!/usr/bin/ksh
FILESLIST=`cat | awk ‘{print “get ” $0 “;”}’`

SBMCLI=’/usr/sfw/bin/smbclient “//computer/share” -W WORKGROUP -U administrator -A /tmp/auth.txt -c ” $FILESLIST exit;”‘
eval $SBMCLI

Y que significa “cat | awk ‘{print “get ” $0 “;”}‘”, bueno para aquellos que son principiantes como yo, he de decir que lo que hace es transformar cada nombre de archivo por el siguiente formato: get fileX; ya que el smbclient requiere ese formato para descargar archivos. Si yo se, que parece que al script le falta algo, pero créanme está completo y funciona, bueno y si aun después de que les dije que funciona no me creen, pueden probarlo. Cabe mencionarles que éste script ha sido probado copiando unos 12,000 archivos y no he tenido problemas.

Si tienen la sensación que alguien se robó algunas líneas, les diré que quien hace la magia es el comando eval, que hace una sustitución de las variables y ejecución de los comandos que le son pasados por parámetro, por eso no necesitamos hacer mas y no, nadie se robó nada.

Si observamos con detenimiento el script anterior funciona si requerimos hacer una copia muy especifica de archivos es decir especificarle los nombres solo de los archivos que queremos usar, un ejemplo de como usarlo sería:

Copiar todos los archivos de un directorio.
$ ls | copysmb.ksh

Algo un poco mas elaborado, Copiar todos los archivos que contengan el patrón alumno en su nombre.

$ ls | grep alumno | copysmb.ksh

Un poco mas de nivel, Copiar todos los archivos que terminen en varias extensiones.

$ ls | egrep ‘(wmv$|mkv$|mpg$|mpeg$|avi$)’ | copysmb.ksh

Son muchos los ejemplos que podríamos poner pero confío en que ya se haya entendido la idea. Existe una manera de copiar por patrón que el smbclient y que también puede funcionar para otros casos. Les dejo el script modificado.

#!/usr/bin/ksh
FILES=`cat | awk ‘{print “mget ” $0 “;”}’`

/usr/sfw/bin/smbclient “//computer/share” -W WORKGROUP -U administrator -A /tmp/auth.txt -c ” $FILES exit;”

Las palabras que están en verde, remarcadas y subrayadas deben ser sustituidas de acuerdo a las necesidades.

es el dominio o grupo de trabajo.

es el usuario con los permisos para escribir.

es el archivo donde tenemos las credenciales.

Antes que concluyera mi artículo me di cuenta que hacia falta algo, y ese algo es que nos interesa saber que archivos hay en windows ya que sería complicado(no imposible) saber archivos contiene el recurso compartido windows y basado en eso hacer la copia de archivos. Ya tenemos un script con un gran avance y podemos basarnos en el y hacer lo siguiente:

#!/usr/bin/ksh

/usr/sfw/bin/smbclient “//computer/share” -W WORKGROUP -U administrator -A /tmp/auth.txt -c ” ls; exit;”

Vamos a suponer que el script lo nombramos como lssmb, para ejecutarlo sería:

$ lssmb.ksh

Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.30-1.4.osstech]
. D 0 Sun Apr 6 13:29:41 2014
.. D 0 Wed Dec 25 19:24:42 2013
Documentos D 0 Sat Jan 1 01:02:45 2000
bittorrent D 0 Sat Jan 1 09:17:56 2000
Multimedia D 0 Sat Jan 1 00:05:22 2000
cw D 0 Wed Dec 12 13:38:20 2012

Sin embargo el listado que nos mostrará será al estilo de un ls -l, asi que si queremos pasarlo al copysmb.ksh tendremos que darle un filtrado, ejemplo:

$ lssmb.ksh | head -n -2 | tail -n +3 | copysmb.ksh

Y ya entrados en ésto se me ocurre que podemos mezclarlo con los ejemplos anteriores.

$ lssmb.ksh | head -n -2 | tail -n +3 | grep alumno | copysmb.ksh

$ lssmb.ksh | head -n -2 | tail -n +3| egrep ‘(wmv$|mkv$|mpg$|mpeg$|avi$)’ | copysmb.ksh

Conclusión. Realizar la copia de archivos a través de smbclient es algo muy sencillo, como lo hemos podido constatar. Los scripts presentados anteriormente solo son una guia, y pueden ser mejorados y adaptados a las necesidades de cada quien, podríamos incluir los filtros dentro del script para evitar verlos, pero preferí hacerlo asi ya que eso nos da la oportunidad de ver todos los parámetros de los archivos, sin embargo podemos modificar los scripts para que acepten parámetros y sean mas poderosos y flexibles.

Anuncios

Diario de un friki.

Publicado: febrero 21, 2011 en Uncategorized

Despues de desayunar, me dispongo a trabajar con la computadora. El dia de hoy he decidido que debo continuar estudiando la guía oficial de ethikal hacker.Mientras estudio me doy cuenta que necesito música para enceder mis neuronas, después de haber puesto mis bocinas 5.1 en una disposición adecuada para escuchar los efectos, escucho algunos temas interpretados por Rostropovich, Rodrigo y otros autores. Me doy cuenta que necesito más adrenalina entonces escucho los greatest hits de Enigma. Mientras tanto recuerdo que he  “reorientado”(el aire la movió hacia el sur) mi antena de wifi hacia una nueva ubicación entonces pongo mi buffalo WHR-G54S flasheado con dd-wrt 23sp2 a buscar nuevas redes, mientras capturo algunos paquetes con el aircrack que instalé a través del ipkg. Estoy en el capitulo de password cracking y recuerdo que tenía un software de @stake el lc 5 el cual no pude encontrar en mi reducido compendio de software(solo suma 120GB), lo cual me hizo recorrer mi asidua página de descargas en la cual tampoco lo encontré; debe ser porque es algo viejo, mientras lo busco encuentro una certificación de red-hat la cual no pude resistir el  deseo de descargar; sigo navegando y me doy cuenta que está disponible la película The expendables la cual no tuve la oportunidad de ver en el cine. Mientras dejo encolada la descarga de la película en el jdownloader se me ocurre que puedo descargar el cain y Abel para amenizar la mañana jugueteando un poco con las contraseñas de Windows. (más…)

Hola mundo

Publicado: septiembre 16, 2010 en Uncategorized

Hola mundo.

Mucho tiempo he esperado para crear un blog, ya que por diversos motivos no he querido escribir.

Sin embargo la inquietud no ha podido detenerse y hoy por fin ha llegado el dia.

Mi intención es publicar una gran variedad de articulo, desde tecnología hasta pensamientos propios.

Hasta luego y nos vemos en la blogosfera…