SSH sin contraseña : Copiar llave ssh en una línea

Para poder acceder a un ordenador mediante llaves, tenemos que copiar la llave pública al ordenador al que queremos acceder. Podemos hacerlo en una sola línea con:

cat ~/.ssh/id_rsa.pub | ssh usuario@hostremoto -p 22  'cat >> .ssh/authorized_keys'

Otra forma de hacerlo

ssh-copy-id -i ~/.ssh/id_rsa.pub usuario@hostremoto

Intel HD 4000: cambiar la aceleración

Para cambiar el tipo de aceleración en una intel. Hay dos tipos:

  • UXA - (Unified Acceleration Architecture) es la aceleración tradicional
  • SNA - (Sandybridge's New Acceleration) es la aceleración más moderna
 Editamos el archivo /etc/X11/xorg.conf.d/20-intel.conf y colocamos:

Section "Device"
   Identifier  "Intel Graphics"
   Driver      "intel"
   Option      "AccelMethod"  "uxa"
EndSection

ORA-00600: codigo de error interno, argumentos: [kkqsMMVPCTDriverForEQ:eq],

Me daba esté código de error al hacer un inner join de dos tablas con una condición como esta

on t1.year = 2003 and t2.year = 2003 and t1.otrocampo = t2.otrocampo

Lo he solucionado al cambiar esa condición por esta otra equivalente:

on t1.year = 2003 and t2.year = t1.year and t1.otrocampo = t2.otrocampo

Oracle: normalizar issn mediante sql o pl/sql


Función rápida para normalizar un issn, de modo que tenga 8 caracteres y no tenga guión:

select  lpad(REGEXP_REPLACE(issn,'[^0-9X,]',''),8,'0') issn_normalizado from tabla

Si tuviesemos un campo de entrada  tipo  ISSN, ISSN podríamos usar algo así

select title,issn,lpad(  regexp_substr( REGEXP_REPLACE(issn,'[^0-9X,]',''), '^[^ ,]*') ,8,'0')  issn1,
lpad(  regexp_substr( REGEXP_REPLACE(issn,'[^0-9X,]',''), '[^ ,]*$') ,8,'0') issn2
from tabla
lo único malo que si sólo hay un ISSN saldrá duplicado.

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.


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

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

gnome-terminal : no arranca

Si el terminal de gnome (gnome-terminal) no funciona, y al ejecutarlo desde otra consola obtenemos el siguiente error:
> gnome-terminal
Falló en GConf: No se pudo contactar con el servidor de configuración: Error de D-Bus: El demonio de GConf se está apagando en este momento
Ejecutamos lo siguiente:
killall gconfd-2

Oracle obtener fecha de creación de una tabla

Para obtener cuando se creó una tabla usaremos la siguiente consulta:

select object_name, created from user_objects
where object_name = 'NOMBRE_TABLA'
AND object_type = 'TABLE';
 Para obtener todas las fechas de creación de todas las tablas del usuario:

select object_name, created from user_objects
where object_name in (select table_name from user_tables )
AND object_type = 'TABLE'
order by created desc;

BASH : utilizar echo con saltos de línea

Para poder insertar saltos de línea con el comando echo en linux se usa la siguiente sintaxis :

echo -e "\n linea 1 \n linea 2 \n" > salida.txt
Se usa el -e y el salto de línea se reprenta con \n, y todo va entrecomillado.