sábado, noviembre 27, 2010

Metadatos e imágenes ocultas en fotografías


De vez en cuando vuelve a aparecer el tema de los metadatos en fotografías.

Hay múltiples ejemplos de gente que publica una foto retocada y resulta que a partir del fichero se puede obtener la foto original.

Además junto con la foto viajan datos como: la cámara utilizada, la apertura, la fecha y hora, el programa de edición utilizado, la fecha y hora de edición, etc. etc.

Resulta que en algunas cámaras de móviles parece ser que también puede ocurrir que se almacenen las coordenadas del GPS en el momento de la fotografía.

¿Que programas gratuitos utilizar para la lectura, edición y eliminación de metadatos?

En Mac OSX: Podemos usar el CocoViewX cuya web he puesto en la cabecera de este post.

De esta forma podemos ver la posible foto oculta (Thumbnail) y también se puede utilizar como un simple visor de fotografías (opciones de pantalla completa, paso de diapositivas, rotación, etc.).

Y si seleccionamos la foto y le damos al botón derecho y "obtener información", tendremos la información extra de la foto, la cámara, el momento, etc.





Los campos son editables y el programa permite también eliminar la información EXIF.

Mañana explico las opciones gratuitas en Windows.

Saludos.

jueves, noviembre 25, 2010

Navaja Suiza de Shell (Bash)

A la izquierda una imagen procedente de la Wikipedia.


Bash es un intérprete de comandos.



Se creo teniendo en cuenta la sintaxis utilizada en el Bourne Shell que era el estándar de facto en el mundo UNIX. El Bourne Shell lo desarrolló Stephen Bourne de los laboratorios Bell.


Volviendo al Bash, sus iniciales significan Bourne-Again Shell (otro shell Bourne). Born-Again significa Renacimiento. Se desarrolló para el proyecto GNU y ahora está ampliamente extendido en Linux, Mac OSX, UNIX, etc.

La documentación:

Aquí tenemos el manual de referencia del Bash.

Y lo que creo que es más útil que lo anterior:

Aurélio Marinho Jargas publicó un libro llamado Shell Script Profissional. Como apéndice del libro ha publicado la "navaja suiza de shell (bash)" y Gonzalo Nemmi lo ha traducido al castellano.

La Navaja Suiza de Shell (Bash) en Portugués.


La Navaja Suiza de Shell (Bash) en Castellano.

Saludos.

lunes, noviembre 22, 2010

Pequeños objetivos


Hola,

El sábado acudí a la cena homenaje de Eloy Corres, distinguido socio de la Excursionista Manuel Iradier que merece la insignia de oro que le dieron y mucho más.

Me encontré con korrikalaris de todas las edades y alguno me picaba un poco por eso de "con lo que tu andabas...y ahora...", "cómo has dejado tanto tiempo el deporte...", "...no te preocupes un día volverás...", "...lo malo es que no poder correr al ritmo que corrías desmolariza..."

Pues sí, me he decidido. Acabo de pesarme en el peso que siempre pesa de menos y marca 92 kg. El objetivo es hacer la media maratón de Vitoria-Gasteiz el 19 de diciembre de 2010.

El segundo objetivo es conseguir terminar vivo a ser posible la inhumana prueba de "Apuko igoera 2011" que siempre suele ser o nevando o con lluvia helada con desbordamiento de río incluido.

Todos los días pondré en la primera línea los kilómetros recorridos, a ver si es un elemento de motivación.

Ayer: 45 minutos. Ligera lluvia mañanera.
Hoy: 30 minutos. Ligera lluvia nocturna.

¿Qué objetivo tiene esta entrada aquí?
1.-Obligarme a mí mismo, ya que tampoco hay exceso de motivación.
2.-Animarle a otra persona si le pasa lo mismo que a mí (que no está a gusto con una vida excesivamente sedentaria).

Saludos.

domingo, noviembre 21, 2010

Crear un CD de instalación de HP-UX

Hace algún tiempo expliqué cómo generar una cinta de ignite en HP-UX. Lo que ocurre es que muchas veces luego el sistema no arranca de la cinta de ignite.

Para estos casos es conveniente crear un CD de instalación. Se tiene el CD preparado y si ocurre algo con los discos del sistema se ponen nuevos y se instala todo el sistema.

Para generar un CD:

Vamos al directorio /opt/ignite/data/scripts/examples y ejecutamos:

#./make_media_install -r B.11.31 -m

La opción -r es para indicar la versión del Sistema operativo (V3 en este caso).

Se generará una imagen .ISO que nos servirá para crear el CD.

Recuperación del sistema:

1.-Al arrancar hay un momento en el que el sistema nos dirá "to discontinue press within 10 seg".
Hacemos clic en cualquier tecla para interrumpir el arranque.

2.-Vamos al "boot option maintenance menú".

3.-Seleccionamos boot->CDROM si existe la opción. Si no hay esa opción hacemos ADD BOOT OPTION y creamos por ejemplo la entrada CDROM. El volumen a seleccionar será "removable media boot" y el data type Unicode.

4.- Se arranca por esa entrada CDROM.

5.-Se siguen las indicaciones. Nos preguntará el nombre de la máquina, la IP, etc. Es como una instalación completa a partir de un CD de Windows.

No olvidéis probarlo en un entorno de pruebas antes. Yo tuve problemas al arrancar del CD generado.

Saludos.

miércoles, noviembre 17, 2010

Carrera de camiones en el Jarama

El pasado 3 de octubre fui a ver las carreras de camiones del Jarama. Según el diario As había 70.000 espectadores.

Antes de las carreras había sesiones de exhibición. Las hubo de camiones clásicos, camiones americanos e incluso de motos.

Aquí el paso de un camión americano:


Camiones decorados y motos siguiéndolos.
Por cierto entre estos camiones he reconocido el Scania de Cazurrín decorado con Unicornios. No es que lo conozca en persona sino que es un aficionado a estos temas al que le hicieron una entrevista en la revista "Todo Camión" de hace unos meses.



También había una especie de zona reservada dónde estaban aparcados los camiones:




Y por último... la carrera:


Si puedo, el año que viene espero ir con mi propio camión. No a competir, sino a participar en la zona central de camiones.

Bueno, como hay que barrer un poco para casa, aquí una entrevista del navarro Javier Mariezkurrena realizada el día de la prueba.

Saludos.

domingo, noviembre 14, 2010

Transferencia de ficheros en UNIX y Linux


Voy a comentar algunas cosas obvias, y otras que me han pasado a mí con HP-UX (podrían no ser problemas generales).

scp (secure copy):

Ejemplos de uso:

scp -p -r servidorA:/datos .
Copia el directorio /datos del servidorA al directorio actual del servidor donde estemos.

Ventajas:
  • Para la transferencia de datos utiliza ssh (protocolo seguro).
  • Puedes limitar el uso del ancho de banda (opción -i en hp-ux).
  • Tiene la opción -p muy útil para preservar permisos y fechas de creación, modificación, etc.
  • Con la opción -r (recursiva) se copiarían los subdirectorios del directorio indicado.

Inconvenientes:
  • Es un protocolo seguro, lo cual significa que hay un cifrado. Esto hará que sea más lento que los protocolos inseguros.
  • En HP-UX tiene un comportamiento imprevisto con los enlaces simbólicos. En lugar de copiar el enlace sin más, hace también la descarga del fichero apuntado por el enlace. Esto puede ser un verdadero problema si tenemos "accesos directos" a ficheros gigantes. Para solucionarlo, antes del scp podemos empaquetar el contenido por medio de tar (ver abajo).

¿Qué significa lento para mí?

Hoy he tenido que mover con scp 1 fichero de 35 Gb.
Ha tardado 1 hora 50 minutos (110 minutos).
Por lo tanto mover 1 Gb le lleva 3,14 minutos.
O sea, que la media ha sido de 5,31 Mb/sg.
Con otros ficheros de tamaño similar he obtenido medias de 8,6 Mb/sg y 10,4 Mb/sg

Aquí pongo para comparar los ratios de escritura en cinta según hp (www.hp.com/go/storagemedia/dds):

DDS1 de 1990: 366 Kb/sg
DDS2 de 1993: 1,4 Mb /sg
DDS3 de 1996: 3 Mb / sg
DDS4 de 1999: 2-6 Mb /sg
DAT72 de 2003: >6 Mb /sg
DAT160 de 2007: >10 Mb /sg
DAT 7th gen: > 16 Mb /sg
DAT 8th gen: > 32 Mb /sg

ftp:


Ejemplos de uso del ftp que viene en windows:

ftp servidor (o bien ejecutar ftp y luego open servidor).
comando binary: va a hacer la transferencia en modo binario.
comando ascii: va a hacer la transferencia en modo ascii.
cd directorio para moverse a través de los directorios del servidor.
mget ficheros para traer múltiples ficheros (con las opciones de *,?).
mput ficheros para llevar múltiples ficheros.
bye para salir.

Ventajas:
  • Es el de toda la vida. Disponible en todos los servidores del mundo.
  • Al no cifrar es más rápido que el scp.
Inconvenientes:
  • Totalmente inseguro. El usuario y contraseña "viajan" en claro.
  • Normalmente deshabilitado en los servidores.
Tiempos registrados (el propio ftp te da la información al terminar):

Fichero de 34301726720 bytes en 5133,76 segundos (6524,99 Kbytes/s).
Esto da 6.681.599,20 bytes/s
O lo que es lo mismo (dividiendo entre 1024): 6,525 Mb/s.

Otro caso:

Fichero de 41178882048 bytes en 5813,19 segundos (6917, 67 Kbytes/s).
Esto da 7083697,94 bytes/s
Lo cual es (dividiendo entre 1024): 6,918 Mb/s

Aviso: realmente para pasar a Mb/s habría que haber dividido otra vez entre 1024 en lugar de entre 1000.

Aviso2: estos tiempos son con la red y el servidor origen a pleno rendimiento (a diferencia de los tiempos del scp).

sftp (secure file transfer program)

Ventajas:

  • A diferencia del anterior, éste es un protocolo seguro.
  • Se puede utilizar en modo interactivo o también en modo batch (con la opción -b se indic a un fichero batch).
  • Se puede habilitar la compresión.

Inconvenientes:

  • Utiliza ssh por debajo. Esto supone que hay cifrado y por lo tanto la copia tardará más.

tar (tape file archiver):

Ejemplos de uso:

Para empaquetar a un fichero .tar:
tar -cvf fichero.tar directorio

Para desenpaquetar
tar -xvf fichero.tar

Este no es un protocolo de transferencia de ficheros sino un comando para guardar o restaurar ficheros en cintas. También permite guardar una selección de ficheros en otro fichero en lugar de en una cinta (empaqueta). Por lo tanto puede ser interesante para el paso de ficheros de un sistema a otro.

Inconvenientes:
  • Resulta que en HP-UX no va bien con ficheros largos (más de 2 Gb), lo cual es un serio problema.
gzip/gunzip

En lugar de empaquetar (tar), así podemos comprimir.

Para comprimir:

Es habitual primero empaquetar para conseguir un fichero.tar
Y luego comprimir ese fichero:

gzip fichero.tar
El resultado será fichero.tar.gz

Para descomprimir:

gunzip fichero.gz



nfs (Network File System):

Ejemplos de uso:

mount servidorFuente:/datos/directorio-compartido /directorio

Por medio de NFS un servidor puede ofrecer un file system a otro. Esta puede ser una forma de poner ficheros a disposición de un servidor.

Ventajas:
  • No hay una copia de ficheros de un servidor a otro, sino que un servidor accede al file system del otro.
  • El acceso se habilita rápidamente sin tener que esperar horas y horas hasta pasar los ficheros. El problema es que al procesar esos ficheros en el servidor que accede vía NFS hay un tráfico de red que va a hacer lento el procesamiento.
Saludos.

miércoles, noviembre 10, 2010

Descargar vídeos flash desde Safari



Hola amig@s,

Hoy sólo voy a reproducir lo que pone en ese enlace: cómo descargar los vídeos flash desde el navegador por defecto en Mac OSX. (También se puede descargar el Safari para windows desde http://www.apple.com/safari/

La descarga se puede hacer sin ningún pluggin que es el hecho diferencial respecto a la mayoría de navegadores.

En el enlace que he indicado está muy bien explicado. Incluye imágenes y todo. Yo sólo voy a dejar un resumen por si algún día desaparece la información:

Habría que hacer lo siguiente:

1.-Ponerse a reproducir el vídeo en el navegador.
2.-En el menú principal entrar en VENTANA, ACTIVIDAD.
3.-Se nos mostrará una lista con un montón de archivos que han sido descargados (archivos html, css, gif, jpg, js, etc.). Tenemos que buscar el vídeo que se está reproduciendo. La pista es que será probablemente el único que ocupe decenas de Mb.
4.-Doble click en el fichero del vídeo para que inicie la descarga a la zona de DESCARGAS establecida.

Saludos.

martes, noviembre 09, 2010

Vim algo más que un editor de texto

En servidores UNIX no te queda otro remedio y hay que utilizar el vi, o el vi.

En Windows yo lo suelo utilizar por la facilidad de cifrado de ficheros y facilidad de búsqueda de cadenas. Ya hablé de esto en otra ocasión. En esa entrada hay enlaces interesantes a ayudas gráficas y al sitio de descarga.

Hoy quiero explicaros una herramienta sorprendente y muy útil integrado en el vim.

NETRW (Network oriented reading, writing, and browsing):

¿Queréis probarlo? Os va a sorprender.

Entra en el VIM y ejecuta :e c:
Te aparecerá algo así:

Vaya, ha abierto la unidad C:

Pero es que podemos navegar carpeta a carpeta.
En la propia cabecera nos muestra los comandos disponibles y las teclas que hay que pulsar (D: delete, R: rename, s: sort, x: ejecutar, etc.).

Lo bueno del vi y del vim es la gran rapidez, ya que no son aplicaciones pesadas. Esto hace que podamos movernos mucho más rápido que con el explorador de windows.

Pero NETRW es mucho más potente que esto.

Podemos utilizar múltiples protocolos de red. Todo disponible en el mismo editor. ¿Qué es más potente, Microsoft Word o vim? Vale, para editar texto el Word por razones obvias (vi es un editor de texto sin formato). Pero Vim sirve para muchas cosas más.


REMOTE EDITING
:e dav://machine[:port]/path uses cadaver
:e fetch://[user@]machine/path uses fetch
:e ftp://[user@]machine[[:#]port]/path uses ftp autodetects <.netrc>
:e http://[user@]machine/path uses http uses wget
:e rcp://[user@]machine/path uses rcp
:e rsync://[user@]machine[:port]/path uses rsync
:e scp://[user@]machine[[:#]port]/path uses scp
:e sftp://[user@]machine/path uses sftp

REMOTE READING
:Nread ? give help
:Nread "machine:path" uses rcp
:Nread "machine path" uses ftp with <.netrc>
:Nread "machine id password path" uses ftp
:Nread "dav://machine[:port]/path" uses cadaver
:Nread "fetch://[user@]machine/path" uses fetch
:Nread "ftp://[user@]machine[[:#]port]/path" uses ftp autodetects <.netrc>
:Nread "http://[user@]machine/path" uses http uses wget
:Nread "rcp://[user@]machine/path" uses rcp
:Nread "rsync://[user@]machine[:port]/path" uses rsync
:Nread "scp://[user@]machine[[:#]port]/path" uses scp
:Nread "sftp://[user@]machine/path" uses sftp

REMOTE WRITING
:Nwrite ? give help
:Nwrite "machine:path" uses rcp
:Nwrite "machine path" uses ftp with <.netrc>
:Nwrite "machine id password path" uses ftp
:Nwrite "dav://machine[:port]/path" uses cadaver
:Nwrite "ftp://[user@]machine[[:#]port]/path" uses ftp autodetects <.netrc>
:Nwrite "rcp://[user@]machine/path" uses rcp
:Nwrite "rsync://[user@]machine[:port]/path" uses rsync
:Nwrite "scp://[user@]machine[[:#]port]/path" uses scp
:Nwrite "sftp://[user@]machine/path" uses sftp
http: not supported!

REMOTE DIRECTORY BROWSING
:e [protocol]://[user]@hostname/path/
:Nread [protocol]://[user]@hostname/path/

LOCAL DIRECTORY BROWSING
:e /some/path/to/a/directory

Saludos.

lunes, noviembre 08, 2010

Copiar el crontab a un servidor HP-UX


Hola amig@s,

Hoy un tema muy sencillo, pero como todo hay que saber hacerlo bien.

Bueno ya sabéis lo que es el demonio cron. Es el equivalente al programador de tareas de Windows. He hablado de su fichero de configuración, el crontab varias veces:

Primero recordaba el peligro de matar un proceso que ha lanzado el demonio cron.

Luego hable de la sintaxis a utilizar al introducir entradas en el crontab.

Por último puse un ejemplo de script que hacía una export Oracle y por medio del crontab ejecutaba otro script que eliminaba los ficheros con cierta antigüedad.

Ahora supongamos lo siguiente:

Tenemos que llevar toda la configuración del crontab de un servidor a otro. En mi caso es un servidor HP-UX pero me imagino que será análogo a otros UNIX y Linux.

En la máquina origen haríamos:
#crontab -u usuario -l > /tmp/usuario.crontab

Se mueve el fichero usuario.crontab a la máquina destino.

En la máquina destino haríamos:
#crontab -u usuario < /tmp/usuario.crontab


Hacerlo de esa forma es lo correcto ya que además de la copia del fichero crontab, envía una señal SIGHUP al cron para indicarle que tiene que leer el fichero.

Otra opción podría ser la copia directa de los ficheros de /var/spool/cron/crontabs y luego reiniciar el cron:


/sbin/init.d/cron stop
/sbin/init.d/cron start

No he probado si esta segunda forma funciona sin más. La forma ortodoxa es la primera.

Saludos.

domingo, noviembre 07, 2010

Abrir ficheros en Pascal. Control de errores en lecturas de ficheros.

Continuando con el programa del otro día, necesitaba obtener una lista de ficheros.
Había ejecutado el comando dir, y el resultado se guardaba en un fichero de texto.

Cuando se abre un fichero tanto en el mítico Turbo Pascal como ahora en FreePascal hay que tener en cuenta que se pueden producir múltiples errores:
  1. El fichero puede que no exista.
  2. El fichero puede existir pero igual no tenemos permiso de lectura sobre él.
  3. Errores incomprensibles como el que me ha pasado a mí. El fichero existe pero FreePascal me da un error en tiempo de ejecución. Meto la comprobación de errores y sin hacer nada más ya no se produce el error.
  4. Otros errores.
La comprobación de errores se hace de esta forma:
{$I-}      // directiva del compilador para deshabilitar control de errores.
reset(varFichero);
{$I+} // directiva para habilitar el control de errores.
if IOResult = 0 then
//ejecución si no se ha producido ningún error.

El programa se queda así de momento:


 1 program aztertu;
2 uses
3 Dos;
4 var
5 shell : string;
6 listaFicheros: array[1..1000] of string;
7 fichListaFicheros: text;
8 numFicheros: integer;
9 i:integer;
10
11 procedure buscarFicheros(var listaFichero: array of string; var numFicheros: integer);
12 var
13 nombreFichero: string;
14 i:integer;
15 begin
16 assign(fichListaFicheros, 'ficheros');
17 {$i-}
18 reset(fichListaFicheros);
19 {$i+}
20 if IOResult=0 then
21 begin
22 i:=1;
23 while not eof(fichListaFicheros) do
24 begin
25 readln(fichListaFicheros,nombreFichero);
26 listaFicheros[i]:=nombreFichero;
27 i:=i+1
28 end;
29 numFicheros:=i-1;
30 end
31 else
32 writeln('No he podido escribir en este directorio');
33 end;
34
35 procedure tratarFichero(var nombre:string);
36 begin
37 writeln(nombre);
38 end;
39
40 begin
41 shell:=GetEnv('COMSPEC');
42 Exec(shell, '/C dir > ficheros');
43 buscarFicheros(listaFicheros,numFicheros);
44 writeln('LISTA DE FICHEROS:');
45 writeln('------------------');
46 for i:=1 to numFicheros do
47 tratarFichero(listaFicheros[i]);
48 end.
49

De momento el programa no hace nada. Sólo muestra la lista de ficheros:



Saludos.

jueves, noviembre 04, 2010

Ejecución de comandos desde FreePascal


Necesitaba un programa que ejecutara comandos Windows.

En la imagen de arriba tenemos un ejemplo que he encontrado en http://www.freepascal.org/


Hay que incluir la unidad DOS.
Luego hay que leer de las variables de entorno (o del sistema) dónde está el intérprete de comandos.
Y como ejemplo válido, sin más, le pasamos el equivalente a "dir > ficheros".

Saludos.

lunes, noviembre 01, 2010

Monitorización de Datacore


Ya he comentado alguna vez lo que se consigue con Datacore.
Es la virtualización de almacenamiento. Con un par de servidores Datacore sobre dos cabinas de discos consigues:

1.-Alta disponibilidad por replicación entre los servidores Datacore.
2.-Independencia respecto al hardware de almacenamiento.

Datacore se instala sobre servidores Windows, y hay que monitorizar los eventos que se produzcan. Un software gratuito para ello es EventSentry. Sobre esto escribí dos post hace algún tiempo:

  1. http://aitoreus.blogspot.com/2010/07/monitoriza-los-eventos-de-tus.html
  2. http://aitoreus.blogspot.com/2010/07/monitoriza-los-eventos-de-tus_20.html
El martes de la semana pasada tuvimos una reunión con el CEO de Datacore (también Presidente y fundador) George Teixeira, que mostró mucho interés en saber que tal nos iba con nuestra instalación. Aproveché para hacer una consulta técnica:

Los eventos que se producen en el servidor Windows son muchas veces de poca relevancia, y no tienen influencia en el funcionamiento de Datacore. Pregunté cuales son los eventos críticos que tienen que hacer saltar todas las alarmas.

Esta es la respuesta:

Las alarmas tienen que saltar por alertas producidas por los siguientes procesos:

  1. DcsHA (control del mirror entre los 2 servidores Datacore).
  2. DcsVLV (Gestión de la capacidad física de almacenamiento).
En el EventSentry hay que configurar dos "Event Log Packages" para que cualquier log de Aplicación, Seguridad o Sistema relacionados con estos procesos se nos notifique vía mail inmediatamente. El filtro se realiza con el campo "Event Source".




Saludos.