miércoles, 19 de junio de 2013

Linux: montar manualmente un disco duro usb o una memoria usb

1) Para ver los dispositivos conectados por usb usamos lsusb. Verificamos que el sistema ve lo que hemos conectado por usb, Ejemplo de salida:
sudo lsusb
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 002: ID 03f0:1027 Hewlett-Packard
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 1058:0748 Western Digital Technologies, Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

El dispositivo que quiero conectar es un disco duro usb externo que aparece aquí
Bus 001 Device 002: ID 1058:0748 Western Digital Technologies, Inc.

2)Ahora averiguamos como se llama el dispositivo usando el comando blkid. blk muestra todos los dispositivos de bloques estén montados o no.

sudo blkid
 /dev/cciss/c0d0p2: UUID="86165349-5270-4ee2-af89-c9a0a1725780" TYPE="ext3"
/dev/cciss/c0d0p1: TYPE="swap" UUID="a24a8fc5-73b8-4679-b7d9-6f9a2bd29310"
/dev/sda1: LABEL="SCIM_UP8" UUID="12E8-0618" TYPE="vfat"
/dev/sdb1: UUID="48285059-4728-498f-9781-bb56d167eb69" TYPE="reiserfs"
/dev/sdc1: UUID="39a48089-1847-4697-8f22-d09bd8e447f0" TYPE="reiserfs"
/dev/sdd1: UUID="48285059-4728-498f-9781-bb56d167eb69" TYPE="reiserfs"
/dev/sde1: UUID="39a48089-1847-4697-8f22-d09bd8e447f0" TYPE="reiserfs"
/dev/dm-2: UUID="48285059-4728-498f-9781-bb56d167eb69" TYPE="reiserfs"
/dev/dm-3: UUID="39a48089-1847-4697-8f22-d09bd8e447f0" TYPE="reiserfs"
/dev/dm-5: LABEL="DISCO_X8" UUID="12E8-0619" TYPE="vfat" 

El dispositivo que busco es :
/dev/dm-5: LABEL="DISCO_X8" UUID="12E8-0619" TYPE="vfat"
Su sistema de archivos es tipo "vfat" que suele ser el habitual en memorias usb o dispositivos externos

3) Montamos el disco en un directorio, creándolo previamente si no existe
sudo mkdir /mnt/externo-usb
mount -t vfat /dev/dm-5 /mnt/externo-usb

4)  Verificamos que el dispositivo está correctamente montado:
 mount -l | grep mnt
/dev/dm-5 on /mnt/externo-usb type vfat (rw) [DISCO_UP8]

5) Para desmontarlo:
umount /mnt/externo-usb
sync
El comando sync limpia los buffer y escribe todos los datos pendientes.


martes, 18 de junio de 2013

Gnome: reiniciar gnome-shell

Para reinicar Gnome-shell, por ejemplo cuando alguna vez se queda colgado o se dispara el consumo de memoria.

1) Pulsamos Alt F2  simultaneamente.
2) Escribimos r y le damos al enter.

Mantendrá todos los programas abiertos, por lo que es más cómodo que cerrar ya brir la sesión o matar el servidor X ( control alt retroceso  simultaneamente).

sábado, 15 de junio de 2013

Md5 en oracle

Para calcular md5 en Oracle podemos crear la siguiente función:

create or replace

FUNCTION md5hash (str IN VARCHAR2)
    RETURN VARCHAR2
    IS v_checksum VARCHAR2(32);

    BEGIN
        v_checksum := LOWER( RAWTOHEX( UTL_RAW.CAST_TO_RAW( sys.dbms_obfuscation_toolkit.md5(input_string => str) ) ) );
        RETURN v_checksum;
        EXCEPTION
            WHEN NO_DATA_FOUND THEN
            NULL;
        WHEN OTHERS THEN
            -- Consider logging the error and then re-raise
            RAISE;
    END md5hash;

Ejemplo de uso:
select md5hash('diego') from dual;
Resultado:
078c007bd92ddec308ae2f5115c1775d

Si nuestra idea es almacenarlo como raw:

create or replace
FUNCTION md5raw (str IN VARCHAR2)
    RETURN RAW
    IS v_checksum VARCHAR2(32);

    BEGIN
        v_checksum :=  UTL_RAW.CAST_TO_RAW( sys.dbms_obfuscation_toolkit.md5(input_string => str) ) ;
        RETURN v_checksum;
        EXCEPTION
            WHEN NO_DATA_FOUND THEN
            NULL;
        WHEN OTHERS THEN
            -- Consider logging the error and then re-raise
            RAISE;
    END md5raw;

Ejemplo de uso (crear tabla, crear campo, insertar, consultar):
drop table tmp_die_md5;
create table tmp_die_md5(md5 raw(16) );
insert into tmp_die_md5 select md5raw('Diego') from dual;
select * from tmp_die_md5 where md5= '4FB845C67D91BCB3178498FC6FE1FEDC' ;
select * from tmp_die_md5 where md5= ( md5raw('Diego'));
Fuente:
http://www.pilcrow.nl/2010/12/md5-function-in-oracle