| Subcribe via RSS

Convierte ficheros de vídeo a 3gp con Mobile Media converter

Octubre 23rd, 2009 | No Comments » | Posted in chorradillas, linux

Mobile Media Converter es un fantástico programa que nos permite convertir archivos de sonido y vídeo a diferentes formatos, incluido el 3gp muy usado en los dispositivos móviles. Es un software muy fácil de usar, muy recomendable.

Existen versiones para Linux (hay un paquete .deb que se puede usar para Ubuntu) y Windows.

Se puede descargar de aquí:

http://www.miksoft.net/mobileMediaConverterDown.htm

Como curiosidad, entontré en los foros de Ubuntu este script para convertir ficheros .avi a un formato adecuado para móviles:

mkdir mobile; IFS=$'\n' ; for f in `ls -1 *.avi` ; do FILE=$(basename "$f" .avi) ; mencoder "$FILE.avi" -oac lavc -lavcopts acodec=libmp3lame:abitrate=64 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1:vbitrate=200 -ffourcc DX50 -vf scale=400:240 -o "mobile/$FILE.avi"; sleep 30; mencoder "$FILE.avi" -oac lavc -lavcopts acodec=libmp3lame:abitrate=64 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2:vbitrate=200 -ffourcc DX50 -vf scale=400:240 -o "mobile/$FILE.avi"; rm "frameno.avi"; rm "divx2pass.log"; sleep 30; done
Tags: , , ,

Automatizar la conexión a sFTP

Septiembre 25th, 2009 | 2 Comments | Posted in Bash, linux, privacidad-y-seguridad

En este artículo os voy a contar cómo descargar ficheros mediante sFTP (FTP encriptado) de manera automatizada; es decir, sin tener que andar ejecutando el comando ni tener que meter la clave a mano cada vez.

El script es bien sencillito:

#!/bin/bash
 
# Aquí ponemos los datos de conexión
USUARIO=usuario
CLAVE=clave
HOST=miftp.com
PUERTO=22
 
lftp -p${PUERTO} -u ${USUARIO},${CLAVE} sftp://${HOST} << CMD
get copia_seguridad.bz2 copia_seguridad.bz2
bye
CMD

Basta con que sustituyas estos datos por los de tu servidor:

USUARIO=usuario
CLAVE=clave
HOST=miftp.com
PUERTO=22

El puerto se puede dejar el de ssh por defecto, pero en varios servidores me he encontrado que usan uno distinto así que la opción para especificar el puerto es muy útil para mí.

lftp (sophisticated file transfer program) es el que se va a encargar de identificarse en el servidor mediante sftp. Todo lo que escribamos entre <

Me he pasado un buen rato hasta que he conseguido ponerlo en marcha así que lo dejo aquí por si a alguien le puede servir de ayuda.

Aquí podéis ver otra forma de hacerlo

Tags: , , ,

Introducción a Bash: control de flujo en nuestro script (if/else)

Mayo 25th, 2009 | No Comments » | Posted in Bash, linux, programacion

Hoy vamos a añdadir un poco más de salsa a nuestra introdicción a Bash. Vamos a ver cómo funciona el if/else.

La estructura de un if/else en bash es la siguiente:

if [ condicion ]; then
      ...
else
      ...
fi

(el “else” es opcional).

Ojo, los corchetes deben ir siempre separados de la condición por un espacio.

Comparaciones aritméticas:

Aquí tenéis una lista de comparaciones que se pueden hacer entre números.

  • -lt : menor que (less than)
  • -gt : mayor que (greater than)
  • -le : menor o igual (less or equal)
  • -ge : mayor o igual (greater or equal)
  • -eq : igual a (equal)
  • -ne : distinto de (not equal)

Compraraciones con cadenas

  • = : igual
  • != : distinto
  • < : menor que
  • > : mayor que
  • -n c1 : se cumple si la cadena c1 no está vacía
  • -z s1 : se cumple si la cadena c1 está vacía

If anidados

Desde luego, se pueden usar if/else dentro de otros if/else, se pueden anidar sin problemas.

Ejemplo

Y para ilustrar todo esto vamos a ver un sencillo ejemplo que espera que le pasemos una palabra como parámetro:

#!/bin/bash
 
if [ $# -eq 0 ]; then
	echo "Dime algo, por favor"
else
	if [ $1 = 'hola' ]; then
		echo "Hola! que tal?"
	else
		echo "No te entiendo, solo entiendo la palabra 'hola'"
	fi
fi

Si lo guardamos en un fichero llamado if.sh y le damos permisos de ejecución (chmod +x if.sh) esto es lo que responderá dependiendo de qué parámetros usemos:

$ ./if.sh
Dime algo, por favor
$ ./if.sh nada
No te entiendo, solo entiendo la palabra 'hola'
$ ./if.sh hola
Hola! que tal?
Tags: , ,

Renombrar varios ficheros a la vez con PyRenamer

Mayo 21st, 2009 | No Comments » | Posted in heramientas, linux, ubuntu

PyRenamer es un sencillísimo programa (sencillo de usar) que te permite renombrar un montón de ficheros de golpe. Ya expliqué hace un tiempo cómo cambiar la extensión de varios archivos de golpe desde la consola, pero seguramente este programa le resultará mucho más cómodo a la mayoría.

El programa está disponible bajo licencia GPL y, dado que está escrito en Python, debería funcionar en casi cualquier sistema operativo que disponga de Python y PyGtk (yo sólo lo he probado en mi Ubuntu).

Supongamos que queremos renombrar varios archivos con el siguiente formato:

Nombre serie – 1×01 – El comienzo.avi
Nombre serie – 1×02 – La continuación.avi
Nombre serie – 1×03 – El final.avi

al siguiente formato:

1×01 – El comienzo.avi
1×02 – La continuación.avi
1×03 – El final.avi

Podemos hacerlo siguiendo estos pasos:

Paso 0) Instalar el PyRenamer en nuestra máquina evidentemente.

1) Arrancar el programa.

2) Ir al directorio que contiene los archivos que queremos renombrar.

3) Seleccionamos la pestaña “Patrones”.

4) En “Patrón de selección de archivos” podemos dejar el “*” que viene por defecto o podemos cambiarlo para trabajar sólo con los archivos que nos interesen.

5) En “patrón de nombre de archivo original” escribimos:

Nombre serie - {#}x{#} - {X}

Las llaves sirven para indicar la parte que cambia:

{#} – Sirve para indicar un número
{X} – Sirve para indicar letras

6) En “patrón de nombre de archivo nuevo:

{1}x{2} - {3}

{1}, {2}, {3} son las coincidencias que ha encontrado en la cadena original, las partes que ha encontrado entre llaves.

En el primer caso:

Nombre serie - {#}x{#} - {X}

Con el fichero:

Nombre serie - 1x01 - El comienzo.avi

El primer {#} recogerá el “1″, el segundo {#} recogerá el “01″ y {X} recogerá “El comienzo.avi”. Con lo que el nombre resultará en:

1x01 - El comienzo.avi

7) Pinchamos el botón “previsualizar” para ver si el renombrado se hace como esperábamos.

8 ) Hacemos click en renombrar y listo.

Tags: , , , ,

Introducción a bash: Pasar argumentos a un script bash

Mayo 15th, 2009 | No Comments » | Posted in Bash, linux

En esta segunda entrega de la miniguía de bash vamos a ver cómo pasar argumentos (o parámetros a un script bash).

En la primera entrega vimos cómo crear un fichero y hacerlo ejecutable. Siguiendo esas instrucciones puedes crear un fichero llamado parametros.sh y copiar lo siguiente:

#!/bin/bash
echo $1

Si invocamos el script con el siguiente comando:

parametros.sh primero

el resultado sería:

primero

Como vemos, el argumento “primero” ha quedado almacenado en la variable $1 (sí, con bash se pueden usar variables ¿no es maravilloso?).

El siguiente comando:

parametros.sh primero segundo

Nos mostrará lo mismo que antes:

primero

Los argumentos en bash se separan por un espacio, de tal forma “segundo” sería el segundo argumento. Para recogerlo y mostrarlo tendríamos que modificar nuestro script:

#!/bin/bash
echo $1
echo $2

Para recoger el tercer argumento usaríamos $3 y así sucesivamente.

Existe una variable, $#, que se crea automáticamente que contiene el número de argumentos que se han pasado al script:

#!/bin/bash
echo "Total argumentos: $#"

al llamarlo con:

parametros.sh primero segundo

mostrará:

Total argumentos: 2

También se crea automáticamente otra variable, $@, que es un array que contiene todos los argumentos. Si hacemos:

#!/bin/bash
echo $@

nos mostará todos los argumentos:

parametros.sh primero segundo

resultado:

primero segundo

Ya veremos en otra entrega cómo trabajar con este y otros arrays.

¿Qué utilidad tiene esto de los argumentos?

Los argumentos dan una gran flexibilidad a nuestros scripts ya que mediante ellos podemos indicar con qué fichero o directorio queremos trabajar o especificar un usuario por ejemplo.

Tags: ,

¿Por qué no se guardan los archivos ocultos en mi archivo TAR?

Mayo 11th, 2009 | No Comments » | Posted in linux

Probablemente te habrás encontrado alguna vez con este problema al crear un archivo tar: los archivos ocultos en la carpeta “raíz” no se almacenan.

Suponiendo que tienes una carpeta ‘prueba/’ que contiene los siguientes archivos:

.fichero1
fichero2
fichero3

Si haces:

tar cf test.tar prueba/*

no se copiará el archivo .fichero1

Sin embargo si hacemos:

tar cf test.tar prueba/

Sí que se copiará.

Parece una tontería, pero si no te das cuenta puedes perder un montón de tiempo.

Por cierto esto lo encontré aquí.

Tags: , ,

La consola de Linux: averiguar a qué grupos pertenece un usuario

Mayo 4th, 2009 | No Comments » | Posted in linux

Para saber a qué grupos pertenece un usuario basta con usar el siguiente comando:

groups gorka

y nos mostrará un listado con todos los grupos a los que pertenece.

Tags: , ,

Introducción a bash: crear un sencillo script

Abril 27th, 2009 | 1 Comment | Posted in Bash, linux

Con este artículo voy a iniciar una corta serie de artículos para aprender a escribir sencillos scripts de bash.

Bash es un intérprete de comandos de Linux. Los que han trabajado con Windows/MS-Dos les sonarán seguramente los archivos .bat. Estos scripts bash son algo muy similar.

Para crear nuestro primer script debemos crear un fichero, por ejemplo primero.sh y copiamos el siguiente contenido:

echo "Eh, este es mi primer script bash"

Ahora tenemos que hacerlo “ejecutable”, para ello teclearemos en la consola:

chmod +x primero.sh

y ahora podemos ejecutarlo:

./primero.sh

Y ahora vamos a darle un poco más de gracia al asunto. En un script podemos usar los mismos comandos que si estuviéramos en la consola de Linux, por ejemplo: ls -las. Vamos a modificar el script:

echo "Este es el listado de directorios y ficheros:"
ls -las

Más adelante veremos que se pueden pasar parámetros a un script bash, se pueden usar variables, bucles, condiciones, arrays, etc…

Tags: , ,

Bash: listar los usuarios de un ordenador

Abril 24th, 2009 | No Comments » | Posted in Bash, linux, programacion, ubuntu

Dado que últimamente estoy haciendo bastantes cosillas con bash voy a poner una serie de “truquillos” aquí.

NOTA: El ejemplo que propongo aquí es un copia/pega de un script que creé para un servidor y una finalidad muy concretas.

En cierto servidor necesitaba tener un listado de los usuarios. Una posibilidad puede ser ir al directorio home y ver allí los usuarios (cada usuario tendrá un directorio ‘home’).

for directorio in /home/*; do
	echo ./actualizador_cada.sh $directorio.
done

dará como resultado:

/home/gorka
/home/alumno
/home/lost+found
/home/mysql
...

Si queremos que no nos muestre ‘/home’ podemos eliminar esa parte de cada directorio usando una subcadena:

echo ${directorio:6}

(esto mostrará una subcadena de $directorio desde la posición 6 hasta el final)

for directorio in /home/*; do
	echo ${directorio:6}
done

dará como resultado:

gorka
alumno
lost+found
mysql
...

NOTA: esto funciona en un sistema en el que los usuarios tengan directorios ‘home’ iguales a su nombres de usuario.

Seguramente verás que hay algunos usuarios que no te interesan (en mi caso sólo me interesaban los usuarios “reales”) así que añadí unas líneas para eliminar los que no interesaban (mysql, lost+found, etc…):

usuarios_no_validos=( 'mysql' 'lost+found')
for directorio in /home/*; do
	valido=1
	usuario=${directorio:6}
	for usuario_no_valido in ${usuarios_no_validos[@]}; do
		if [ $usuario_no_valido = $usuario ]; then
			valido=0
		fi
	done
	if [ $valido -eq 1 ]; then
		echo $usuario
	fi
done
Tags: , , ,

Linux: Recuperar un archivo que tiene un nombre con caracteres extraños

Noviembre 6th, 2008 | No Comments » | Posted in linux

En alguna ocasión me ha ocurrido que se suben a algún servidor archivos en cuyo nombre hay caracteres con una codificación diferente a la que usa el servidor. Si el servidor no puede traducirlos a su codificación los dejará “tal cual” pero luego será un dolor de cabeza acceder a ese archivo.

Por ejemplo, si un usuario sube un archivo con el nombre:

sin-título.jpg

es posible (dependiendo de tu servidor) que se almacene como:

sin-t�tulo.jpg

Quizá se te ocurra renombrarlo para que tenga un nombre más adecuado haciendo:

mv sin-título.jpg sin-titulo.jpg

o:

mv sin-t�tulo.jpg sin-titulo.jpg

Lo más seguro es que no te funcione ninguno de estos métodos. Pero tranquilo, antes de abrirte la cabeza y arrancarte el cerebro con una cuchara prueba lo siguiente:

more sin-t�tulo.jpg > sin-titulo.jpg

es posible que te funcione ¡suerte!

Tags: , , ,