viernes, 31 de diciembre de 2010

Redirección de la Salida de Errores en Linux

Hoy (si 31 de Diciembre del 2010) tuve un problema intentando capturar los errores en postgres que me daba un script.

Cualquier persona que haya trabajado con psql sabe que  muestra los errores durante la ejecución de los scripts en la pantalla. Sin embargo como el script era muy largo desde luego que era mejor, copiar todos los errores  en una archivo y luego revisarlos uno a uno. De hecho se sabe que cuando son muchos mensajes después de cierto numero de lineas los mensajes que aparecen al principio se van perdiendo y no es posible recuperarlos.

Lo primero que hay que tener en cuenta es que la salida de errores no es lo mismo que la salida estándar. Aunque tanto los resultados de la salida de error como la estándar arrojan los resultados en pantalla.

Por esa razón pensaba que con un simple:

plsql -U usuario -d base_de_datos -c "\i archivo_de_script.sql" -h localhost  > errores.out

Capturaría todos los errores. Pero así solamente se capturan los mensajes de la salida estándar. Para capturar los errores debe hacerse:


plsql -U usuario -d base_de_datos -c "\i archivo_de_script.sql" -h localhost  2> errores.out

Pero aquí tuve nuevamente un problema, no me daba de cuenta de que el "2>" era pegado y no separado. Me llevo tiempo darme cuenta.

Fuentes:

Curso de Linux Gratis. Tuberias. Wikilearning: http://www.wikilearning.com/curso_gratis/curso_de_linux-redirecciones_y_tuberias/4230-13

sábado, 4 de diciembre de 2010

Archivo de configuración de NetBeans

Hace poco tuve que repararle el NetBeans a alguien que tuvo la mala idea de instalar el jdk en el escritorio y accidentalmente lo movió. Luego de detectar el problema quise ponerlo en otra ubicación.

Al principio pensaba que se trataba de las variables de entorno y eso. Pero a mi intuición le llevo más de una hora dar con el siguiente archivo

/usr/local/netbeans-6.9/etc/netbeans.conf

Fíjense el nombre del subdirectorio "etc", que coincide con el "/etc" de la instalación de linux.  Desde en esa dirección es allí en donde esta netbeans en el caso de mi máquina y variara de una máquina a otra dependiendo de como se haya hecho la instalación.

Allí se cambia la dirección en donde dice:

# Default location of JDK, can be overridden by using --jdkhome <dir>:
netbeans_jdkhome="/opt/jdk1.6.0_20"

a la ubicación del jdk deseada y listo.

Reiniciar un Sistema Operativo real como si fuera virtual en VirtualBox

Este es un ejemplo de cómo iniciar otro sistema operativo desde nuestra máquina, que no este virtualizado, sin tener que salirnos del sistema y volver a iniciar.

Antes que nada debemos tener todos los permisos del  disco duro en donde este instalado el sistema operativo que se vaya a manipular. Generalmente el disco duro se identifica como sda (puede tener otro nombre o no ser un disco duro):

sudo chmod 666 /dev/sda

esto aunque parezca, no es tan peligroso y ese cambio que hicimos se perderá al volver arrancar el sistema. De hecho no tiene efecto desde el escritorio, para que tenga efecto tiene que arrancarse virtualbox desde la misma consola, como se verá más adelante

Luego se crea un enlace de disco duro virtual al  disco duro real:

VBoxManage internalcommands createrawvmdk -filename ~/.VirtualBox/HardDisks/mint.vmdk -rawdisk /dev/sda -relative -register

por ultimo se arranca virutalbox (DESDE LA MISMA CONSOLA QUE ESTAMOS USANDO). Tecleando:

VirtualBox

En virtualbox se crea un sistema operativo virtual (cuyas características correspondan al real), escogiendo como unidad de disco duro la que se acaba de crear: "mint-vmdk", y con esto deberíamos poder arrancar el sistema real como virtual.

¡Pude arrancar en la máquina virtual el mismo SO que estaba corriendo!. Eso es peligroso y no se debería hacer.

Fuente: http://ubuntulife.wordpress.com/2009/05/13/ejecutar-varios-sistemas-operativos-reales-desde-virtualbox/

martes, 9 de noviembre de 2010

Hora del Hardware y hora de Linux

Existen dos horas: la hora del hardware (la hora que almacena el setup) y la hora de linux.

para saber la de linux se utiliza

date

mientras que para saber la de hardware

hwclock

Para establecer la hora de linux, por ejemplo, en el caso de la fecha 02-25-2009, con hora 16:25 se utiliza:

$ sudo date -s "02/25/2009 16:25:00"

Para establecer la hora de hardware, por ejemplo, en el caso de la fecha 02-25-2009, con hora 16:25 se utiliza:

# hwclock --set --date="2009-02-25 16:25"


Cambiar/Restaurar la Password del Root desde Grub

no se puede saber que password de root teniamos anteriormente a menos que se crackee la password, pero eso requiere tiempo (aunque existen algoritmos que permitirían crackearla en un tiempo razonable: vulnerabilidades en MD5, no se quien más pero la NSA lo sabe muy bien)

no es necesario si solo queremos volver a acceder al sistema.

Para cambiar la password de root desde Grub se debe en primer lugar, por supuesto, reiniciar el sistema y acceder al menú de Grub. Si este menú no aparece se debe mantener la tecla de mayúsculas presionada, la que tiene una flecha hacia arriba (en las versiones viejas se utiliza ESC).

la primera línea será algo como esto:

linux    /boot/vmlinuz-2.6.32-25-generic root=UUID=4f89d205-8eff-44cd-a3ed-aabcf8380db7 ro   quiet splash

no tiene que ser exactamente igual. Se edita esta línea presionando la letra 'e'.

Borra el 'splash' (si no podría no arrancar) y al final de la línea agrega esto init=/bin/bash

debería ser fácil pero será  un poco fastidioso debido a que el teclado estará desconfigurado, si usas teclado un teclado español, latinoamericano, etc

quedará algo como esto:

linux    /boot/vmlinuz-2.6.32-25-generic root=UUID=4f89d205-8eff-44cd-a3ed-aabcf8380db7 ro   quiet init=/bin/bash

luego, tal como dice abajo del grub se presiona ctrl-x y arranca (no se porque en algunas páginas se dice que se presione 'b')

al arrancar y aparecer el '#' en el prompt que indica que estas trabajando como root se debe teclear el siguiente comando

mount -o remount,rw /

esto es debido a que el sistema de ficheros se carga como de solo lectura

finalmente cambias la password con

passwd


esto lo escribí con ayuda de esta fuente:

http://www.iberprensa.com/todolinux/articulos/TL96_grub.pdf

sábado, 23 de octubre de 2010

Pasar un video de un formato a otro desde la consola de linux

En mi caso necesitaba pasar el video de un formato flv a mpg.

Por si no esta instalado:

sudo apt-get install ffmpeg

para especificar resolución del video se utiliza el parámetro -s. En este caso utilice una resolución de 1024x800:

ffmpeg -i video.flv -s 1024x800 video.mpg

jueves, 21 de octubre de 2010

Borrar un archivo con una extención específica de todo el árbol de directorios

Me ha pasado en varias ocasiones que después de introducir el pendriver en una computadora desconocida este me viene con infinidad de virus cuyos nombres son similares a los de los archivos que están en el pendriver pero que en realidad son programas ejecutables. Me llevaría horas borrar cada uno de esos archivos desde el directorio raíz y  cada subcarpeta.

Más o menos lo primero que a uno se le ocurriría es algo así como esto (en realidad no recuerdo que fue todo lo que se me ocurrió) :

find /media/nombre_pendriver/ -iname '*.exe'| xargs  rm -f -v
pero es inútil. No funciona o al menos eso es lo que pasa en ubuntu.

Después de revisar los man y eso descubrí que para que funcionase debía especificar el delimitador de cada entrada de archivo que le llega a xargs (este asume que por defecto ese delimitador es 0, si no recuerdo mal). El delimitador en el caso de ubuntu es '\n' que lo conocerán aquellos que tienen algo de experiencia en lenguaje C. Colocando entonces el delimitador el comando queda así:

find /media/nombre_pendriver/ -iname '*.exe'| xargs --delimiter='\n' rm -f -v

toma en cuenta que si el nombre del pendriver o de la carpeta raíz desde la cual se borrara tiene espacios en blanco se debe colocar '*' en lugar de los espacios en blanco o encerrar todo el nombre entrecomillas.

martes, 19 de octubre de 2010

Tomar un screenshot desde la consola en linux

#apt-get install imagemagick
#import -window root nombredearchivo.formato

Esto lo extraje desde esta fuente:

http://richieblog.wordpress.com/2008/10/12/tomar-un-screenshot-desde-la-consola-en-linux-probado-en-debian/

no lo he probado

pero la verdad es que no hace falta instalar nada (me di cuenta después de escribir lo anterior). Basta hacer:

xwd -root -screen > captura.xwd

fuente:

http://www.skamasle.com/como-capturar-la-pantalla-desde-la-consola-comando-tomar-capturas-en-debian-ubuntu/

Tomar una foto con la webcam desde la consola en Linux

Instala xawtv:

sudo apt-get install xawtv
Luego ejecuta v4lctl:

sudo v4lctl -c /dev/video0 snap jpeg 640x400 ~/foto.jpg&

la foto deberá aparecer en tu directorio home