Ir al contenido

Entradas etiquetadas como ‘bash’

11
nov

Crear una ISO a partir de un CD

Linux tiene varias maravillas que lo hacen realmente simple y potente (sí, simple!). Una de ellas es el comando dd, que permite hacer varias cosas, entre las que puede considerarse la de crear una ISO. Esto se hace de manera muy sencilla:

dd if=/dev/cdrom of=nombre_imagen.iso

En el ejemplo anterior se toma como origen el dispositivo de CD (que puede variar según la distribución) y se genera el archivo nombre_imagen.iso. Que hay utilidades gráficas más “amigables” no lo niego, pero hay que reconocer que dd es la más ampliamente distribuida y nadie puede decir que no es capaz de ejecutar el comando anterior.

11
nov

Watch: repetir periódicamente la ejecución de un programa

Muchas veces nos encontramos en la necesidad de ejecutar repetidas veces un comando, siendo la forma más común de hacerlo la de escribir una y otra vez el mismo comando. Por suerte, existe en Linux una utilidad que se llama watch que hace precisamente esa tarea por nosotros. La forma de uso es extremadamente simple:

watch comando

Por ejemplo, si estamos copiando archivos desde otro lugar y deseamos hacer un ls de un directorio para controlar el ritmo de la copia se podría ejecutar:

watch ls

Que dará como salida:

Every 2.0s: ls                           Thu Nov 11 16:55:00 2010

netstorming

-----------------------------------------------------------------

Every 2.0s: ls                           Thu Nov 11 16:55:04 2010

netstorming
mikroways

Sin dudas, hay situaciones donde el watch es mucho más útil, espero entiendan que lo anterior fue sólo a modo de ejemplo.

6
nov

Reemplazar cadenas en múltiples archivos

Para cualquier administrador de un sistema es muy común en muchas oportunidades encontrarse con la necesidad de cambiar una frase determinada en múltiples archivos de texto. Un ejemplo sería si cambiamos la IP de una máquina y luego debemos modificarla también en la configuración de múltiples servicios. Existen básicamente dos maneras de hacerlo: a mano, editando archivo por archivo, o automáticamente, mediante un script.

A continuación, valiéndonos sólo de comandos estándares de Unix realizaremos dicha tarea mediante el siguiente script. Supondremos que deseamos modificar la IP 192.168.1.5 por la 192.168.2.5 en todos los archivos que estén en el directorio /etc.

cd /etc
for i in `grep -R "192.168.1.5" * | cut -d : -f 1 | uniq`; do
sed -i s/"192.168.1.5"/"192.168.2.5"/g $i
done

Veamos qué hace el script anterior. La línea del grep busca recursivamente en todos los directorios aquellos archivos que contengan la cadena “192.168.1.5″, luego el cut se queda de esa línea sólo con el nombre del archivo y el uniq evita que el nombre del archivo aparezca repetido. Esto ocurriría si la cadena en cuestión aparece en más de una línea en algún archivo.

El sed es el que realiza el trabajo realmente. Veamos que se encuentra dentro de un bucle y va a ejecutarse para cada uno de los archivos encontrados por el comando grep. El primero de sus parámetros le indica que realice las modificaciones en el mismo archivo ya que el comportamiento por defecto es imprimir su contenido con los cambios en pantalla, pero sin modificarlo; en el segundo parámetro encontramos la letra s que dice que debe reemplazar la primer cadena por la segunda y la letra g indica que lo haga para todas las ocurrencias de la misma; el tercer parámetro es el archivo sobre el cuál se aplicará el sed, en este caso la variable $i.