viernes, marzo 14, 2008

Como carajo poder utilizar el pendrive en virtualbox OSE y no morir en el intento (emulando winxp)

Muy fácil... En múltiples blogs dicen un poco de paja loca acerca de editar archivitos y a la final no levanta el pendrive. Bien, la solución fue crear un directorio y compartirlo en nuestro pc host. Pero en el caso de Ubuntu y otras distribuciones el montaje de dispositivos extraibles son hechas por mtab, así que asignar un punto de montaje fijo por mtab no se puede.

¿Que hacer?, Pues una estupidez...

sudo mkdir /media/pendrive

Ejecutamos un tail -f /var/log/syslog y vemos que el pendrive toma el dispositivo sdb1

Luego editamos el fstab y agregamos la siguiente línea:

/dev/sdb1 /media/pendrive auto rw,user,noauto,exec 0 0

Guardamos nuestro archivo y luego abrimos nuestro VirtualBox y nos dirigimos a Directorios Compartidos y agregamos nuestro directorio compartido y hacemos todas las marramucias que ya están en el post anterior de Virtualbox y listo... Ya podremos compartir nuestros documentos del pendrive entre ambas máquinas virtuales.

lunes, febrero 25, 2008

Guía de Crontab

Esta guía la he sacado de la página del Rincondelprogramador.com: A veces se me chispotean como hacer los benditos crones...

crontab: Programar tareas para que se ejecuten solas cuando queramos (Linux)
Daniel Fernández Garrido


Existe en Linux una utilidad que no muchos conocen y que resulta a veces imprescindible: crontab.

crontab permite programar lo que se llaman crones, esto es, tareas que se ejecutarán en un momento determinado del tiempo de manera automática. El sistema Linux (y cualquier UNIX en general) comprueba regularmente, guiándose por el evento de reloj del sistema, si existe alguna tarea programada para ejecutarse y, en caso afirmativo, la ejecuta sin necesidad de que nadie (ningún usuario) lo haga explícitamente.

En primera instancia, algunas aplicaciones que se nos pueden ocurrir para algo así podrían ser:
  • Apagar un equipo a la hora que nosotros queramos: Por ejemplo, mientras dormimos podremos dejarlo bajando cosas de internet haciendo que se apague solo por la mañana.
  • Crear backups: Podríamos programar un cron para que, a cierta hora de ciertos días de la semana o del mes, realizase un backup de nuestros datos de manera automática, sin tener que recordar nosotros el hacerlo.
  • Poner mensajes recordatorios: Para que nos salga en pantalla una ventana recordándonos que hagamos algo que podría olvidársenos.
  • Y muchísimas otras...


La herramienta crontab nos permite programar una tarea para que se ejecute especificando:
  • La hora (0-23)
  • Los minutos (0-59)
  • El día del mes (1-31)
  • El día de la semana (0-7: tanto 0 como 7 representan al domingo)
  • El mes (1-12)


Y además en cualquiera de estos parámetros nos permitirá especificar, mediante un *, que deseamos que ocurra todos los minutos, las horas, los días del mes, los meses, o los días de la semana.

También podremos especificar listas separando mediante una coma, por ejemplo, podremos poner 1,15 en la columna del día del mes para que la tarea se ejecute cada dia 1 y 15 de mes.

Al igual que con las listas, podremos también especificar rangos mediante un guión, de manera que 1-4 en la columa del día de la semana significaría de lunes a jueves.



Los crontab's de usuario.

En un sistema Linux, cada usuario tendrá su propio crontab, incluido root. Por supuesto, en el crontab de cada usuario sólo se permitirá ejecutar tareas para las que ese usuario tenga permisos (por ejemplo, un usuario que no sea root no podrá apagar el sistema).



Manejo del comando crontab.

Para usar la funcionalidad de crontab, el comando nos ofrece, de manera básica, las siguientes posibilidades:


Ver nuestra tabla de tareas programadas

Esto lo haremos con:

$ crontab -l



Editar nuestra tabla de tareas programas

Para editar nuestras tareas cron, ejecutaremos:

$ crontab -e

...y obtendremos un editor (el que hayamos definido en la variable de entorno $EDITOR) en el que podremos añadir líneas a nuestro fichero de crontab, una por cada tarea que deseemos programar, en el formato que se explicará más abajo.


Borrar nuestra tabla de tareas programas

Podremos borrar toda nuestra programación de tareas con:

$ crontab -r




El formato de las entradas de crontab.

Cuando añadamos una entrada a nuestro crontab, lo haremos en una sola línea y con el siguiente formato:

[minutos] [hora] [día] [mes] [dia_de_semana] [comando]



Pongamos algunos ejemplos:

Para apagar el equipo a las siete y media de la mañana del 15 de febrero (ojo, hay que ser root para ejecutar esto):

30 7 15 2 * /sbin/shutdown -h now


Para hacer un .tar.gz de un directorio (como backup, por ejemplo), todos los días laborables a las 14:00:

0 14 * * 1-5 tar -czf /home/backups/backup.tar.gz /usr/importante/


Para que, cada hora, los sábados y domingos, se guarde en un fichero de log las conexiones de red abiertas en el sistema:

0 * * * 6,7 date >> /var/log/net_con.log; netstat -t >> /var/log/net_con.log



...Como se puede ver, es súmamente fácil de manejar y muy potente.

Cuando el rm -R no funciona!!! =-S

Estuve "pariendo" estos días para borrar unos archivos porque no podía eliminarlos por un error que me decía que era una cadena larga de caracteres... Fue todo un dolor de cabeza porque me estaba realmente quedando sin disco. La solución fue esta:

find carpetaparaborrar -type f -exec rm -rf '{}' \;

Y listo... pero, a su vez necesitaba antes de eliminar todos los archivos innecesarios, respaldar los que realmente necesitaba en otro directorio... Esto con la finalidad de evitar confusiones... Entonces esto fue lo que hice: uní el comando para mover los archivos de un directorio con el anterior, de la siguiente manera:

cp *.extension dir-origen/ dir-destino/ & find carpetaparaborrar -type f -exec rm -rf '{}' \;

Y lo guarde en /usr/bin/ y lo llamé respdiario. El resultado fue el siguiente:

/usr/bin/respdiario

#! /bin/bash
cp *.extension dir-origen/ dir-destino/ & find carpetaparaborrar -type f -exec rm -rf '{}' \;

Luego de guardar el archivo, simplemente le di los permisos correspondientes:

chmod 755
/usr/bin/respdiario

Y listo!!!

Tip: procuren utilizar directorios homogéneos para cualquier usuario, a menos que sean ustedes los únicos usuarios... esto con la finalidad de que si otro usuario utiliza el recurso, funcione en los directorios que tienen en común y no con directorios exclusivos de la sesión de usuario...

Guía para empaquetar y desempaquetar archivos en linux

La verdad es que nunca me acuerdo como es el asunto de empaquetar y desempaquetar archivos, así que posteo esta guía. No es de mi autoría, proviene de Badopi, pero badipi esta offline para la fecha de creación de esta entrada, así que la conseguí de una de esas páginas viejas que uno guarda por ahí.

* Ficheros tar
Empaquetar: tar -cvf archivo.tar /dir/a/comprimir/
Desempaquetar: tar -xvf archivo.tar
Ver contenido tar -tf archivo.tar

* Ficheros gz
Comprimir: gzip -9 fichero
Descomprimir: gzip -d fichero.gz

* Ficheros bz2
Comprimir: bzip fichero
Descomprimir: bzip2 -d fichero.bz2

gzip ó bzip2 sólo comprimen ficheros [no directorios, para eso existe tar]. Para comprimir y archivar al mismo tiempo hay que combinar el tar y el gzip o el bzip2 de la siguiente manera:

* Ficheros tar.gz
Comprimir: tar -czfv archivo.tar.gz ficheros
Descomprimir: tar -xzvf archivo.tar.gz
Ver contenido: tar -tzf archivo.tar.gz

* Ficheros tar.bz2
Comprimir: tar -c ficheros | bzip2 > archivo.tar.bz2
Descomprimir: bzip2 -dc archivo.tar.bz2 | tar -xv
Ver contenido: bzip2 -dc archivo.tar.bz2 | tar -t

* Ficheros zip
Comprimir: zip archivo.zip ficheros
Descomprimir: unzip archivo.zip
Ver contenido: unzip -v archivo.zip

* Ficheros lha
Comprimir: lha -a archivo.lha ficheros
Descomprimir: lha -x archivo.lha
Ver contenido: lha -v archivo.lha
Ver contenido: lha -l archivo.lha

* Ficheros arj
Comprimir: arj a archivo.arj ficheros
Descomprimir: unarj archivo.arj
Descomprimir: arj -x archivo.arj
Ver contenido: arj -v archivo.arj
Ver contenido: arj -l archivo.arj

* Ficheros zoo
Comprimir: zoo a archivo.zoo ficheros
Descomprimir: zoo -x archivo.zoo
Ver contenido: zoo -L archivo.zoo
Ver contenido: zoo -v archivo.zoo

* Ficheros rar
Comprimir: rar -a archivo.rar ficheros
Descomprimir: rar -x archivo.rar
Ver contenido: rar -l archivo.rar
Ver contenido: rar -v archivo.rar

lunes, enero 14, 2008

Como cambiar los permisos del disco virtual al arrancar virtualbox (ubuntu gutsy)

Este es un método muy sencillo para cambiar los permisos del disco virtual de Virtualbox y hacer que cualquier usuario pueda ejecutar la máquina virtual sin problemas.

Simplemente lo que tenemos que hacer es crear un script con el nombre que prefiramos en el directorio /etc/init.d/. Yo uso el editor nano para crear los scripts, sin embargo podemos utilizar el editor que más nos guste (vi, gedit, emacs... etc), siempre recordando que debemos colocarle la extensión .sh. En mi caso lo nombré pemisosvbox.sh:

sudo nano /etc/init.d/permisosvbox.sh

Luego escribimos las siguientes líneas de código:

#! /bin/bash
sudo chmod 666 /dev/vboxdrv

Presionamos F2 para guardar los cambios en el archivo y salir y luego tenemos que hacer que llame el script en los RC, que son los manejadores de arranque del sistema, cada vez que iniciemos la pc. Para esto creamos enlaces simbólicos en dichos directorios rc de nuestro archivo permisosvbox.sh, indicándole además el orden de ejecución de dicho archivo en cada uno de ellos: la forma es la siguiente:

sudo ln -s /etc/init.d/permisovbox.sh /etc/rc1.d/K21permisovbox
sudo ln -s /etc/init.d/permisovbox.sh /etc/rc2.d/S21permisovbox
sudo ln -s /etc/init.d/permisovbox.sh /etc/rc3.d/S21permisovbox
sudo ln -s /etc/init.d/permisovbox.sh /etc/rc4.d/S21permisovbox
sudo ln -s /etc/init.d/permisovbox.sh /etc/rc5.d/S21permisovbox
sudo ln -s /etc/init.d/permisovbox.sh /etc/rc6.d/K21permisovbox


Listo...!!! =)

viernes, enero 11, 2008

Como evitar que cambien las configuraciones de Firefox para Ubuntu

Este método es bastante rudimentario, pero evidentemente funciona para los usuarios comunes evitando que puedan meter un dedo indebidamente y cambiar la dirección del servidor proxy o el puerto que les hemos asignado (o que no les hemos asignado)

En terminal (no es necesario ser root):

cd /home/nombre-de-usuario/.mozilla/firefox

ls

Vamos a ver el nombre de un directorio con un número aleatorio que termina con el sufijo ".default". Entramos en ese directorio:

cd 6d2tsx47.default

Por último, buscamos el archivo "prefs.js" ("ls -l |grep pref" fue el comando que usé para localizarlo y ver los permisos que tiene), y luego cambiarle los permisos del usuario propietario a solo lectora:

chmod 444 prefs.js

Listo!!!