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.

TVEenLinux : la television en Opensuse


Para ver la televisión
0) AÑadimos el repositorio de packman para el mplayer:
sudo zypper ar -f http://packman.inode.at/suse/openSUSE_12.2/ repo-packman
1) Instalamos las dependencias:
 sudo zypper in mplayer rtmpdump curl

2) rtmpdump no está en los repositorio habituales, usamos :
http://software.opensuse.org/package/rtmpdump?search_term=rtmpdump

3) Descargar el archivo de:
wget http://www.tvenlinux.com/TVenLinux.sh
4) Darle permisos de ejecución:
chmod u+x TVenLinux.sh
 Más información en :
http://www.tvenlinux.com/

HP obtener el serial number en linux (Suse)


Para obtener el serial numer de productos HP en linux mediante línea de comandos:

Para el servidor (en Suse) :
sudo dmidecode | egrep -i "serial|product"

Para una cabina de discos y la controladora:
hpacucli  ctrl all show

ORACLE: ejecutar procedimiento y paquetes con el usuario actual

Si creamos un procedimiento o paquete con un usuario (UsuarioDueno), y le damos permisos de ejecución a otros (UsuarioAutorizado), el procedimiento se ejecuta por defecto como si lo ejecutase  el  UsuarioDueño.

Ej, supongamos que tenemos un procedimiento que cuenta las tablas del usuario  ( select count(*) from user_tables ) y nos devuelve un número:

create or replace function cuenta return integer is
  salida integer;
begin
  execute immediate 'select count(*) from user_tables' into salida;
  return salida;
end;
/

Y le damos permisos de ejecucion a UsuarioAutorizado:
grant execute on cuenta  to UsuarioAutorizado;

Si ejecutamos el procedimiento:
set serveroutput on;
declare
  tablas integer;
begin
  tablas := cuenta();
  dbms_output.put_line(tablas);
end;
/
Tanto si lo hacemos como UsuarioDueno como UsuarioAutorizado nos saldrá el mismo número de tablas. Esto es a que siempre se accede a UsuarioDueno.user_tables, cuando lo que en realidad queremos es que se acceda a  UsuarioAutorizado, que es nuestro usuario actual (current user) y el usuario que está ejecutando.

En Oracle, hay dos clausulas para controlar el comportamiento:
AUTHID CURRENT_USER  : ejecutar el paquete/función como si fueses el usuario que lo lanza.
AUTHID DEFINER (valor por defecto): ejecutar el procedimiento con los permisos del creador de la función.


Nosotros en este caso tenemos que decir que se ejecute como AUTHID CURRENT_USER. Para ello definimos de nuevo la función, añadiendo:

create or replace function cuenta return integer AUTHID CURRENT_USER is
  salida integer;
begin
  execute immediate 'select count(*) from user_tables' into salida;
  return salida;
end;
/

Si estamos con un paquete, hacemos lo mismo y lo definimos justo antes del "as":

create or replace package contador AUTHID CURRENT_USER  as
      FUNCTION cuenta RETURN integer;
end contador
/
Con esto conseguirmos que un procedimiento se ejecute con otro usuario, el usuario actual, el que ejecuta programa.


Gnome term : cambiar título de la ventana dinámicamente

Para cambiar dinámicamente el título del teminal de gnome, ejecutaremos el siguiente comando:

xtermset -title  'Nuevo titulo'
Este comando también permite modificar otras propiedades como el color de la letra, el fondo....


Linux: refrescar la caché de fuentes

Para refrescar la lista de fuentes del sistema ejecutamos

fc-cache -v -f

Oracle 10G : Pivotar una tabla

Para simular la función PIVOT (introducida en oracle 11), podemos simularla en Oracle 10g con lo siguiente

Partimos de la tabla con la estructura:

( category , year, valor )

Year es el valor que queremos pivotar y tiene valores entre 2003 y 2010. Estos valores habrá que ponerlos a mano



SELECT
category,
 MAX(DECODE(year,'2003',valor,NULL))  a2003
,MAX(DECODE(year,'2004',valor,NULL)) a2004
,MAX(DECODE(year,'2005',valor,NULL)) a2005
,MAX(DECODE(year,'2006',valor,NULL)) a2006
,MAX(DECODE(year,'2007',valor,NULL)) a2007
,MAX(DECODE(year,'2008',valor,NULL)) a2008
,MAX(DECODE(year,'2009',valor,NULL)) a2009
,MAX(DECODE(year,'2010',valor,NULL)) a2010
FROM tabla
where year >= 2003
group by category;





obtendremos una tabla  como

category,a2003,a2004,a2005,a2006,a2007,a2008,a2009,a2010


Montar imagen ISO en linux

Para montar un archivo iso podemos usar el siguiente comando.
1) Creamos un directorio donde se montará la ISO o bien usaremos uno existente:
mdkir /mnt/iso

2) Montamos la imagen
sudo  mount -o loop "/media/disk/Oracle DB for Linux v.10.2.0.1.0.iso"  -t iso9660 -o loop=/dev/loop0 /mnt/iso

en este caso estamos montando el archivo "/media/disk/Oracle DB for Linux v.10.2.0.1.0.iso", lleva comillas porque es un nombre con espacios. La imagen ISO se montará en el directorio /mnt/iso
El caso mas sencillo sería:

mount -o loop imagen.iso  /directorio_donde_se_montara

BASH: script para subir archivos por FTP con bash


El siguiente script de shell , recibe un sólo argumento que es el nombre de un archivo. Si el archivo existe, intenta conectarse mediante ftp al servidor, y subirlo.

Es útil para tareas de automatización

#!/bin/bash
# Copyright (C) 2012 dieguz2
# License: GNU GPL v2
# http://dieguz2.blogspot.com/
# Script: subirftp.sh
#  Este script recibe como argumento el nombre de un archivo y lo sube al servidor ftp

SERVER=192.168.1.1 #Ip del servidor
USER=ftpuser # usuario
PASSWD=password #password

#comprobar el numero de argumentos
if [ $# -ne 1 ]; then
        echo "Argumento incorrectos:e ejecuta $0 archivoasubir"
        exit 2;
fi

#comprobar si existe el archivo
if [ ! -e $1 ]; then
        echo "El archivo $1 no existe"
        exit 2;
fi


echo "Subiendo $1"

#automatización FTP
ftp -inv $SERVER << EOF
user $USER $PASSWD
binary
put $1
bye
EOF

exit 0;

Ubuntu : Activar Alt+tab para cambiar de ventana

Para activar Alt + Tabulador en Ubuntu  10.4 (puede desactivarse tras tocar compiz o desactivar efectos. Esta combinación de teclas sirve para cambiar entre ventanas.

1) Alt + F2  o desde un terminal lanzamos:
  gconf-editor
2) Buscamos la carpeta  app/metacity/global_keybinding y editamos la clave cycle_windows haciendo doble click sobre ella.

3) Ponemos el valor
Tab