Archivo por CategoríasUtilidades
Arch Linux & KDE & Utilidades admin on 19 May 2008
kdepim-backup
Recientemente he reinstalado Arch Linux en mi ordenador portátil para poderlo tener todo en un disco duro cifrado. He aprovechado esto para migrar otra vez de KDE a KDEMod, y con esto he descubierto una de las grandezas de KDEMod, se trata del paquete kdemod-kdepim-backup.
pimBackup es un simple script que genera una copia de seguridad de nuestros datos relativos a todos los programas del paquete KDE Pim (Personal Information Management), esto incluye aplicaciones como KMail, Akregator, Kopete, KWallet, KGPG, KAddressBook, Basket, KOrganizer y alguno más.
Instalación:
pacman -S kdemod-kdepim-backup
Uso:
Botón K --> Internet --> pimBackup / pimeRestore
GNU/Linux & Utilidades admin on 19 Feb 2008
Diferencias entre locate, slocate, mlocate y rlocate
Analizamos estos cuatro programas de GNU/Linux que sirven exactamente para lo mismo (buscar archivos en el disco) y que se usan casi de la misma forma.
Ejemplo de uso, buscamos el archivo sshd_config en todo el sistema de ficheros:
$ locate sshd_config /etc/ssh/sshd_config /usr/man/man5/sshd_config.5.gz
LOCATE
El comando locate se usa para buscar archivos en el disco duro. A diferencia del comando find, que es increíblemente potente, locate sólo puede hacer búsquedas simples por nombre de archivo. A cambio de sus limitadas posibilidades, locate es rápido, muy rápido. El truco está en que no busca a lo largo del disco duro como hace find, sinó que busca en una base de datos propia. Esta base de datos es actualizada por el programa updatedb.
Cuando ejecutamos updatedb, esta base de datos se actualiza. Si hacemos cualquier cambio en los archivos (crear, borrar, mover, etc) y después buscamos algo con locate, este va a buscar en una base de datos que no se corresponde exactamente al estado actual del disco. Es por esto que la mayoría de distribuciones de GNU/Linux ejecutan updatedb de forma automatizada (usando cron) de forma periódica, pero la búsqueda puede no ser perfecta a no ser que usemos el comando updatedb justo antes de usar el comando locate.
El primer problema que tiene locate es que updatedb tarda bastante en recorrer el disco duro. El segundo, mucho más grave, es que si existe una base de datos de todos los archivos del disco y esta puede ser consultada por los usuarios, estos pueden conocer el contenido de los directorios a los que no tienen acceso.
Los comandos locate, updatedb y find (entre otros) són parte del paquete findutils de GNU.
SLOCATE
Ya hemos visto los problemas de seguridad que nos encontramos al guardar una base de datos de los archivos en disco si esta puede ser libremente consultada. Slocate (o Secure Locate) viene a solucionar este problema. La gracia está en que cuando se ejecuta updatedb, la base de datos no guarda sólo el nombre de los archivos, sinó que añade los permisos (propietario, grupo, etc). De esta forma, slocate sólo muestra al usuario la información adecuada, la de los archivos a los que tiene acceso.
MLOCATE
En slocate vemos que el problema de seguridad está solucionado, ahora vamos a conocer mlocate (o Merging Locate) que además de implementar la misma solución (está basado en slocate), soluciona el grave problema de velocidad del comando updatedb. Lo que hace mlocate cuando ejecutamos updatedb no es crear una base de datos entera de todos nuestros archivos, sinó guardar sólo las diferencias a la base de datos original, por lo que updatedb es mucho más rápido si han habido pocos cambios.
RLOCATE
Aquí vamos a dejar de lado la tradicional idea de ejecuto updatedb, luego busco. Pero también dejamos de lado la simpleza de los programas anteriores. Rlocate consta, además, de un módulo para el kernel y de un daemon, todos bajo el mismo nombre. Estos son necesaros para que la base de datos se actualize sóla y no necesitemos usar updatedb. A medida que vamos creando/eliminando archivos en el sistema, rlocate crea bases de dafos diferenciales en tiempo real. Sólo vamos a usar updatedb para optimizar la base de datos. Parece ser la mejor solución, el único problema es el propio hecho de estar cargando un módulo y un daemon sólo para poder buscar archivos, la mayoría de la gente prefiere la simpleza de usar slocate o mlocate.
Una vez analizados los cuatro, está muy claro que ganan mlocate y rlocate, el uso de uno u otro dependerá de las ganas de complicarse preparando el sistema para que funcione rlocate (que tampoco hay para tanto) o si preferimos la simpleza de instalar y usar. Aunque en realidad lo normal es no molestarse mucho con el tema y usar lo que incluya nuestra distribución, que con toda probabilidad va a ser slocate o mlocate.
Utilidades admin on 24 Jan 2008
Cómo unir varios documentos PDF, extraer páginas, y mucho más
Una amiga me comentaba hace unos días la necesidad de crear un documento en PDF a partir de muchos documentos PDF sueltos, tenía que entregar un trabajo en PDF y lo tenía hecho página por página. Busqué por internet y encontré una solución simple: una utilidad llamada PdfTk que es libre (GPL) y multiplataforma (funciona en GNU/Linux, FreeBSD, Solaris, Mac OS X y Windows), y además nos permite hacer muchas más cosas, aquí la lista:
- Unir distintos PDFs en uno solo
- Dividir un PDF para extraer sus páginas
- Rellenar formularios PDF
- Extraer los metadatos
- Extraer los archivos adjuntos de un documento PDF
- Reparar PDFs corruptos cuando es posible
- Cifrar/descifrar documentos mediante contraseña
- Aplicar una marca de agua al fondo del documento
- etc
Este programa funciona en línea de comandos (hay una GUI que no es oficial y que yo no he probado). Lo que viene a continuación son algunos ejemplos prácticos de las opciones que yo he probado, que són las más básicas, lo demás lo probaré el dia que lo necesite:
Unir distontos documentos PDF en un documento PDF final:
$ pdftk doc1.pdf doc2.pdf doc3.pdf cat output doc-unido.pdf
También podríamos usar comodines (*, ?, [a-z], etc), este es el ejemplo más sencillo:
$ pdftk doc?.pdf cat output doc-unido.pdf
Incluso podemos usar variables, esto es tremendamente útil si lo usamos en scripts o si el comando se vuelve realmente largo. Además nos permite seleccionar páginas concretas de cada documento. En el siguiente ejemplo crearemos un documento combinado que contendrá las 3 primeras páginas de doc1.pdf, las 2 primeras de doc2.pdf y la cuarta de doc3.pdf:
$ pdftk A=doc1.pdf B=doc2.pdf C=doc3.pdf cat A1-3 B1-2 C4 output doc-combinado.pdf
Podemos usar este sistema para invertir las páginas de un documento, en este caso supondremos que doc1.pdf tiene 5 páginas:
$ pdftk A=doc1.pdf cat A5-1 output doc1-inverso.pdf
Incluso podemos extraer por separado todas las páginas de un PDF. Este comando crea archivos con nombres pg_01.pdf, pg_02.pdf, etc… y otro archivo llamado doc_data.txt con los metadatos del PDF en nuestro directorio actual.
$ pdftk doc1.pdf burst
Si sólo queremos extraer los metadatos del documento, como por ejemplo el programa que se usó para crear el PDF, la fecha de creación, autor, número de páginas, etc podemos usar el parámetro dump_data:
$ pdftk doc1.pdf dump_data output metadatos.txt
Esto sólo es el principio, no olvidéis consultar la página man para más información, podéis ojearla online. Espero que os haya sido de utilidad.
UNIX & Utilidades admin on 17 Jun 2007
Guardando la salida por pantalla en un fichero con el comando tee
A veces, administrando servidores por linea de comandos, voy a hacer una tarea que se va a demorar mucho tiempo, quizás horas. Por ejemplo, compilar todas las actualizaciones e instalarlas en *BSD, sincronizar un repositorio, etc.
Muchas veces al ejecutar comandos importantes para el sistema es necesario estar atento a la pantalla por si salen mensajes de alerta que nos pueden ser de ayuda, pero es evidente que no podemos estar atentos al 100% con tareas de este tipo. Una solución cutre sería redireccionar el STDOUT (>) a un fichero, usaremos el comando find sólo como ejemplo, por poner algo:
# find / -name *.conf > salida
En este caso, salida contiene toda la salida que hubiese hecho por pantalla el comando en concreto, pero… ¿y si queremos ver la salida en tiempo real, y al mismo tiempo almacenarla en un fichero? Muy facil, vamos a usar tee:
# find / -name *.conf | tee salida
tee envía lo que recibe por el pipe hacia la salida standard STDOUT (la pantalla) y al mismo tiempo lo envia al fichero que le pasemos por parámetro… ¡voilà! Pero supongamos que no queremos escribir de cero el fichero salida como lo haríamos con > sinó añadir esos datos al final como haríamos con >>. En este caso tenemos que usar el parámetro -a (append):
# find / -name *.conf | tee -a salida
Hasta aquí esta mini-explicación de un comando muy útil pero muchas veces desconocido, olvidado o simplemente poco usado.
Seguridad & Utilidades admin on 06 Feb 2007
Análisis-resumen del sistema con phpSysInfo
No voy a traducir algo tan claro:
phpSysInfo is a PHP script that displays information about the host being accessed.
It will displays things like Uptime, CPU, Memory, SCSI, IDE, PCI, Ethernet, Floppy, and Video Information.
Aqui podéis ver un ejemplo bastante completo. Por cierto, la web del proyecto es de las mas bonitas que he visto ultimamente. ¡Corred a descargarlo!
GNU/Linux & UNIX & Utilidades admin on 28 Nov 2006
FISH: el shell interactivo amigable
Cuando empezé a usar sistemas operativos tipo-UNIX aluciné con Bash, realmente no tenía nada que ver con usar la linea de comandos en Windows (aunque yo en Windows nunca la usé demasiado, supongo que precisamente por ser poco amigable). Al poco de usar Bash descubrí podia usar otras opciones como zsh, ksh, tcsh pero ninguna me convenció demasiado.
Hasta hace un par de meses, que fué cuando descubrí al grandioso Fish (Friendly Interactive SHell). A diferencia de las otras que probé, esta sí se parecía mucho a Bash, o sea que no tuve que aprender NADA. Solo tuve que usarla durante un tiempo para ir descubriendo poco a poco sus ventajas, entre las cuales están:
- No solo autocompleta directorios, ficheros y comandos como Bash, ¡lo autocompleta todo! Por ejemplo: ssh te autocompleta con tus hosts conocidos o lugares donde conectaste en el pasado; el autocompletado de comandos incluye brebe descripción del ejecutable en cuestión; autocompletado de variables de entorno; autocompletado de las páginas man y help… y mucho más, y todo esto con paginación de los resultados de autocompletado.
- Uso y abuso de colores. El prompt consta de: usuario@host (en blanco) + directorio actual (en verde). Parece cansino pero te acostumbras a los pocos minutos. Cada tipo de fichero tiene su color, por ejemplo los directorios se en azul, los de texto (txt, pdf, rtf…) en violeta, los multimedia (imágenes, musica, video) en un violeta mas rosado, los binarios en verde, los enlaces blandos en azul, los enlazados en rojo, etc.
- Uso de negrita y subrayado para remarcar rutas correctas, ficheros importantes (imágenes, multimedia, directorios, ejecutables), etc
- Atención al error en tiempo real, si lo que estás escribiendo no es un comando (aún), lo marca en rojo, cuando pasa a ser algo coherente lo pinta de verde. Lo mismo se aplica a directorios o ficheros (aunque estos pasan a blanco).
- Ayuda en modo gráfico, por lo que si escribes help te sale un mensaje de “Help is being displayed in firefox” y efectivamente se abre Firefox (o el navegador que uses por defecto) y te muestra esta completísima ayuda.
Casi se me escapa decirlo, toda esta información que Fish añade (descripciones de los ejecutables, hosts conocidos, páginas man y help, etc) no es estática sinó que se busca en tiempo real. Por este motivo puede suponer un problema si se abusa de sus posibilidades en un ordenador antiguo.Por todo esto y mucho más que voy aprendiendo con el tiempo, prefiero Fish a Bash y cuando uso Bash noto que me falta algo.
Podéis ver algunas capturas de pantalla (y más información sobre Fish) en esta página. Para terminar solo decir que Fish no es perfecto, pero merece mucho la pena probarlo.
Programacion & Utilidades admin on 13 Jun 2006
Indent
Hoy en el menéame han enviado una noticia sobre el International Obfuscated C Code Contest, que como su nombre indica es un concurso de ofuscación de código en C. A los programas ganadores les ponen títulos como: Best of show, Most Obfuscated Algorithm, Best abuse of the rules, Astronomically Obfuscated, Best abuse of system calls, Most Humorous, Best one liner, etc
Para que veáis algunos ejemplos de los programas ganadores, os linkeo algunos:
He pensado rápidamente en el programa indent, que sirve para autoindentar correctamente el código en C. Lo he instalado en mi querido Arch…
# pacman -S indent
…he des-ofuscado algunos de los programas ganadores y me he reido un montón viendo lo que hace la gente para conseguir esos resultados. Pero aunque indent es tan fácil de usar como escribir en el prompt…
# indent file.c
…la mayoría de programas me han dado errores en lineas concretas, y algunos seguian ilegibles incluso después de indentar. Tengo que decir que no me he atrevido a compilar ninguno de ellos
así que si alguien se atreve, que lo cuente!
