Antes o después nos encontramos con el momento desagradable en que nos envían un documento en el formato “Open XML”, un formato cerrado de Microsoft que utiliza a partir de Office 2007 (archivos docx, xlsx, pptx…).
En este caso lo primero que hay que hacer es explicar al remitente que es mejor no utilizar esa engañifa y solicitarle de nuevo el documento en otro formato. Una opción es instalar odf-converter en Windows que permite a Microsoft Office guardar documentos en ODF.
Lo segundo, si lo primero falla, es convertir el documento al formato estándar y abierto ODF, mediante una herramienta en línea de comandos de Go-OO.org basada siempre en odf-converter (la pista es de OOONinja).
Para ello descargamos el fichero rpm desde el repositorio de go-oo.org.
$ wget http://download.go-oo.org/tstnvl/odf-converter/RPMS/i586/odf-converter-3.0.5273-1.i586.rpm
Instalamos herramientas necesarias:
$ sudo aptitude install rpm libgif4
Extraemos los ficheros, bien mediante el gestor de archivadores (doble click sobre el rpm), bien mediante:
$ rpm2cpio odf-converter*rpm | cpio -ivd
Y copiamos los binarios:
$ sudo cp usr/lib/ooo-2.0/program/OdfConverter /usr/bin/odfconverter-2.0
$ sudo cp usr/lib/ooo3/program/OdfConverter /usr/bin/odfconverter-3
El uso es muy sencillo. Por ejemplo para convertir un fichero XLSX hacemos:
$ odfconverter-2.0 fichero.xlsx
Y nos genera (tarda un poco) fichero.ods.
También se puede utilizar para convertir ficheros ODF a DOCX, pero no veo el interés o beneficio. En un momento dado es mejor convertir al formato anterior de Microsoft (doc, xls, ppt…).
El sistema de ficheros FAT es uno de lo más antiguos todavía en uso. Su actual popularidad se debe a que la mayoría de teléfonos móviles, lectores de MP3, cámaras de fotos, radios, etc. solo reconocen este sistema, por lo que las memorias USB, las tarjetas SD, MMC, etc. vienen formateadas con FAT.
El problema es que estos dispositivos no suelen ordenar los ficheros y directorios que encuentran, sino que muesrtan los archivos tal y como están grabados. Esto hace que muchas veces, tras pasar varias horas ordenando tu colección de música, molestándote en ponerles nombres tipo “01-titulo-artista.mp3″ y demás, te encuentras con que el reproductor lista las canciones aleatoriamente.
Para evitar esto basta con “ordenar” los ficheros en el sistema FAT. En GNU/Linux, como es habitual, es muy sencillo hacerlo (el dispositivo debe estar desmontado):
sudo fatsort (dispositivo)
Para que esto funcione bien, primero hay que instalar fatsort, lo que a su vez tambien es muy sencillo:
sudo aptitude install fatsort
Se puede obtener información sobre la patición con:
sudo fatsort -i (dispositivo)
FAT, sort, fatsort, ordenar ficheros, sort files
December 30th, 2009
Güimi
Para pasar vídeos en formato 3gp, habitual en algunos teléfonos móviles, al más estándar avi podemos hacer:
$ ffmpeg -i videoIn.3gp -f avi -vcodec xvid -acodec mp3 -ar 22050 videoOut.avi
Para rotar vídeos que hemos grabado con cámaras de fotos en modo vertical, en vez de horizontal, podemos hacer:
$ mencoder -vf rotate=1 videoIn.avi -oac mp3lame -ovc lavc -o videoOut.avi
o bien:
$ mencoder -vf rotate=1,hqdn3d,eq=25:50 -oac pcm -ovc lavc videoIn.avi -o videoOut.avi
Si además queremos añadir bandas negras a los lados para que el vídeo resultante mantenga las proporciones de imagen de los vídeos horizontales podemos hacer:
$ mencoder -vf rotate=2,expand=-176:0:88:0 -oac pcm -ovc lavc videoIn.mov -o videoOut.avi
video, mencoder, ffmpeg
December 29th, 2009
Güimi
Recientemente he descubierto “PDF Editor”, un programa GPL para GNU/Linux que permite editar PDFs.
Hasta ahora me limitaba a trabajar con pdfs desde el prompt o incluso con GIMP.
PDF Editor no es que funcione maravillosamente, aún está un poco verde, da algunos errores de funcionamiento… pero al final sirve para lo que promete: editar ficheros PDFs.
Funciona en modo gráfico y comando y además está en los repositorios de Debian, Ubuntu…
$ sudo aptitude install pdfedit
PDF Editor, PDF, pdfedit
Para renombrar fotos poniéndoles la fecha en que se realizaron podemos usar el siguiente comando:
$ jhead -n%Y%m%d-%H%M%S *.jpg
p1020288.jpg --> 20090628-155508.jpg
p1020289.jpg --> 20090628-155558.jpg
“jhead” sirve principalmente para modificar las cabeceras exif. Otro comando más sencillo es “exif“.
exif, jhead, prompt
Tengo unos compañeros que se empeñan en utilizar Ms-Access, que es de los pocos programas que no funcionan de manera alguna en GNU/Linux (solo queda el recurso de usar una máquina virtual, como VirtualBox).
Por ello cuando necesito trabajar con ella (o ellos necesitan hacer consultas rápidas y como no saben me lo piden a mi) utilizo un pequeño script para pasar las tablas de Ms-Access a MySQL.
Y dice así:
#!/bin/bash
#
# vuelca_mdb 0.1 - GPL
# (c) Guimi
# http://guimi.net
#
# Ult. mod: Guimi 2009-07
#
# DATOS DEL FICHERO MDB
mdb=xxx.mdb
TABLA1=XXX
TABLA2=YYY
# DATOS DE MYSQL
bbdd=xxx
usuario=xxx
clave=xxx
# FICHERO TEMPORAL
tmp="tmp.$$"
echo "Exportando desde mdb..."
mdb-schema $mdb -S > sql-creacion_mdb$$.sql
mdb-export $mdb $TABLA1 -S -I > sql-datos_mdb$$.sql
mdb-export $mdb $TABLA2 -S -I >> sql-datos_mdb$$.sql
echo "Modificando ficheros exportados..."
# Hay que añadir "IF EXISTS" al "DROP TABLE"
sed 's/DROP TABLE/DROP TABLE IF EXISTS/g' sql-creacion_mdb$$.sql > $tmp
# Hay que cambiar "Long Integer" por "Integer"
sed 's/Long Integer/Integer/g' $tmp > sql-creacion_mdb$$.sql
# Hay que añadir un punto y coma ";" al final de cada linea -que acaba en ")"-
sed -e s/.$/\)\;/g sql-datos_mdb$$.sql > $tmp
mv $tmp sql-datos_mdb$$.sql
echo "Cargando datos en MySQL..."
mysql -D $bbdd -u $usuario --password=$clave < sql-creacion_mdb$$.sql
mysql -D $bbdd -u $usuario --password=$clave < sql-datos_mdb$$.sql
echo "Borrando ficheros temporales..."
rm sql-creacion_mdb$$.sql
rm sql-datos_mdb$$.sql
A continuación otros comandos que pueden ser utiles (proceden del paquete mdbtools).
Mostrar la versión del fichero mdb:
$ mdb-ver xxx.mdb
Mostrar las tablas de un fichero mdb (-1 para mostrar una tabla por fila):
$ mdb-tables -1 xxx.mdb
Generar un fichero C con un Array con los datos de una tabla:
$ mdb-array xxx.mdb TABLA
Access, mdb, mysql, script, prompt, Ms-Access, mdbtools
Me encuentro con que tengo un conjunto de documentos en formato odf, concretamente odt y ods, en los que me gustaría hacer una simple modificación: pongamos que quiero cambiar en todos ellos “NOMBRE_CLIENTE” por “El Cliente”.
Para ello basta con utilizar un simple script que dice así:
#!/bin/bash
#
# modifica_odf 0.1 - GPL
# (c) Guimi
# http://guimi.net
#
# Ult. mod: Guimi 2009-06
#
####################################
tmpdir="tmp.$$"
# Hacemos un bucle para tratar todos los odf del directorio
for x in `ls *.od?`
do
# Mostramos info
echo "Modificando $x..."
# Descomprimimos el odf en un directorio temporal
unzip -q $x -d $tmpdir
cd $tmpdir
# Realizamos las modificaciones necesarias en styles.xml
sed 's/NOMBRE_CLIENTE/El Cliente/g' styles.xml > tmp.xml
mv tmp.xml styles.xml
# Realizamos las modificaciones necesarias en content.xml
sed 's/NOMBRE_CLIENTE/El Cliente/g' content.xml > tmp.xml
mv tmp.xml content.xml
# Borramos el fichero temporal tmp.xml
rm tmp.xml
# Regeneramos el odf
zip -rq9 ../$x *
# Salimos y borramos el directorio temporal
cd ..
rm -r $tmpdir
done
edición de ficheros odf desde prompt, edición masiva de ficheros odf, modificar ficheros odt ods odp odf
Tiene dos funcionalidades principales:
- Permitir múltiples sesiones de terminal en una sola terminal (o conexión).
- Desacoplar los programas en ejecución de la terminal real para que sigan en funcionamiento en background aunque se cierre la terminal, que podrá reconectarse más tarde.
Ejemplo de uso:
$ screen
- Dentro de la sesión ejecutamos un programa, por ejemplo top, y lo desacoplamos con Ctrl-a Ctrl-d.
- Desde otra sesión de terminal (o la misma) reacoplamos el proceso con screen -r o screen -R -D.
Comandos (dentro de screen). Todos empiezan por Ctrl-a:
| Ctrl-a ? |
Ayuda y sumario de funciones |
| Ctrl-a c |
Crear una nueva terminal |
| Ctrl-a Ctrl-n or Ctrl-a Ctrl-p |
Cambiar a la Siguiente o Anterior terminal |
| Ctrl-a Ctrl-N |
Cambiar a la Siguiente o Anterior terminal N [0-9] |
| Ctrl-a ” |
Lista navegable de terminales en funcionamiento |
| Ctrl-a a |
Limpiar un Ctrl-a pulsado por error |
| Ctrl-a Ctrl-d |
Desconectar y dejar la sesión en funcionamiento |
| Ctrl-a x |
Bloquear todas las terminales con una clave |
Uso básico de screen en Linux, comando screen
Hay varias herramientas que nos permiten conocer que equipos son alcanzables en nuestra red.
nmap
Herramienta de exploración de redes y analizador de puertos.
$ nmap -sP 192.168.0.0/24
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2007-06-27 10:13 CEST
Host equipo1 (192.168.0.1) appears to be up.
Host equipo2 (192.168.0.2) appears to be up.
Host equipo3 (192.168.0.4) appears to be up.
...
Nmap finished: 256 IP addresses (12 hosts up) scanned in 2.219 seconds
fping
Una herramienta de ping que se puede utilizar fácilmente para múltiples equipos y en scripts.
$ fping -g 192.168.0./24
192.168.0.0 error while sending ping: Permission denied
192.168.0.1 is alive
192.168.0.2 is alive
192.168.0.3 is alive
ICMP Host Unreachable from 192.168.0.2 for ICMP Echo sent to 192.168.0.4
...
O mejor:
$ fping -g 192.168.0./24 2> /dev/null | grep alive
192.168.0.1 is alive
192.168.0.2 is alive
192.168.0.3 is alive
...
ip
Herramienta de configuración del protocolo ip. Permite ver y modificar rutas, dispositivos, tuneles…
$ ip neig
192.168.0.4 dev eth1 lladdr xx:xx:xx:xx:xx:xx STALE
192.168.0.60 dev eth1 lladdr xx:xx:xx:xx:xx:xx STALE
192.168.0.61 dev eth1 lladdr xx:xx:xx:xx:xx:xx STALE
192.168.0.52 dev eth1 lladdr xx:xx:xx:xx:xx:xx STALE
...
nbtscan
Escanea redes en busca de nombres NETBIOS.
# nbtscan -r 192.168.0.0/24
Doing NBT name scan for addresses from 192.168.0.0/24
IP address NetBIOS Name Server User MAC address
------------------------------------------------------------------------------
192.168.0.0 Sendto failed: Permission denied
192.168.0.2 <unknown> <unknown>
192.168.0.60 xxxx-LAB10 <server> xxxx-LAB10 xx:xx:xx:xx:xx:xx
192.168.0.52 xxxxxxxxxxxx-01 <server> xxxxxxxxxxxx-01 xx:xx:xx:xx:xx:xx
192.168.0.61 xxxx-LAB11 <server> xxxx-LAB11 xx:xx:xx:xx:xx:xx
...
Conocer que equipos hay en una red, Buscar equipos en una red, Averiguar que equipos hay en una red
September 5th, 2008
Güimi
mencoder es una herramienta muy potente que viene en el paquete mplayer y permite trabajar con archivos de audio y video.
mencoder genera ficheros en formato AVI a no ser que se le indique lo contrario.
Se utiliza:
mencoder {videos de entrada} [opciones] [-o archivo de salida]
Como se ve puede utilizarse para encadenar varios archivos de video:
mencoder video1.avi video2.avi -o video_unido.avi
Algunas de las opciones más utiles son:
- oac (output audio codec) {copy,pcm,mp3lame,lavc}
libavc utiliza un codec de la libreria libavcodec
- ovc (output video codec) {copy,divx4,raw,libavc}
- vf (video filter)
- flip (Voltear arriba-abajo)
- mirror (Voltear derecha-izquierda)
- rotate[=...] (Girar)
- scale[=...] (Escalar)
- crop[=...] (Recortar)
- denoise3d[=...] (intenta eliminar el ruido)
- hqdn3d[=...] (intenta eliminar el ruido con mayor calidad)
- eq[=brillo:contraste] (Modifica los colores)
- eq2[=...] (Modifica los colores)
Opciones que más utilizo:
| Salida como mpeg |
-of mpeg |
| Copiar el video |
-ovc copy -oac copy |
| Recodificar el video |
-ovc lavc -lavcopts vcodec=xvid:mbd=2:trell:autoaspect
-ovc lavc -lavcopts vcodec=mpeg4 |
| Indicar frames per second (fps) |
-fps 25 |
| Indicar inicio y fin de la codifiación |
-ss 0:10 -endpos 01:15:23 |
| Incluir subtitulos |
-sub subtitulos.srt |
| Rotar video |
-vf rotate=1 (90º en sentido horario)
-vf rotate=2 (90º en sentido anti-horario) |
| Escalar video |
-vf scale=320:240 |
| Usar sonido externo |
-audiofile audio.mp3 |
| Des/Codificar archivos de imagen |
-mf type=png:fps=25 (con mf -multifiles) |
| Negativo |
-vf eq2=1.0:-0.8 |
| Añadir información |
-info name=titulo,artist=guimi |
Ejemplos:
- Reproducción rápida de DVD
- Codificar videos como mpeg
- mencoder video1.avi video2.avi -of mpeg -o videoFinal.mpg
- Rotar un video, quitarle el ruido y darle más luz
- mencoder -vf rotate=1,hqdn3d,eq=75:100 -oac pcm -ovc lavc videoIn.avi -o videoOut.avi
- Convertir parte de un video a AVI con codec Xvid
- mencoder videoIn.ogg -ss 10 -endpos 01:42:55.5 -oac pcm -ovc lavc -lavcopts vcodec=xvid:mbd=2:trell:autoaspect -o videoOut.avi
- Codificar los capítulos 10-15 del título 2 de un DVD, redimensionando
- mencoder dvd://2 -chapter 10-15 -vf scale=640:480 -o titulo2.avi -oac copy -ovc lavc -lavcopts vcodec=mpeg4
- Igual pero con libavcodec
- mencoder dvd://2 -o titulo2.avi -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=1800 -oac copy
- Codificación de archivos jpg
- mencoder “mf://*.jpg” -mf fps=25 -o salida.avi -ovc lavc -lavcopts vcodec=mpeg4
- Codificar video con un fichero de audio externo
- mencoder videoIn.avi -o videoOut.avi -ovc copy -oac mp3lame -audiofile audio.wav
- Incluir subtítulos en un vídeo
- mencoder -ovc lavc -oac mp3lame pelicula.avi -o pelicula_con_subtitulos.avi -sub subtitulos.xxx
Referencias y ejemplos del manual de mencoder, de Hache Muda y propios.
Uso de mencoder, comando mencoder en Linux