Comandos

Comando sed

Comando sed

El comando sed permite modificar un fichero de texto insertando, reemplazando o borrando cadenas en función de los parámetros que se pasen. Dejo algunos ejemplos que siempre se me olvidan para tenerlos a mano 🙂

# Con la opción -i sobrescribe el fichero. Si no se pone simplemente
# lo muestra por pantalla

# Con comillas dobles se pueden meter variables y se sustituirán (entonces las comillas hay que ponerlas con \")

# Reemplazar en un fichero (/g indica todas las ocurrencias)
sed -i 's/old text/new text/g' file

# Insertar al principio del fichero
sed -i '1s/^/your text\n/' file

Sería cuestión de leerse tranquilamente la documentación pero éstos son los casos más frecuentes que me aparecen.

Y ya está 🙂

Manejar máquinas virtuales por línea de comandos

Manejar máquinas virtuales por línea de comandos

Llevo mucho tiempo sin escribir, pero a ver si con el tiempo puedo recuperar la costumbre. Hoy traigo un pequeño script que me he preparado para levantar máquinas virtuales por línea de comandos. Nunca me acuerdo de los parámetros que hay que poner, así que con esta herramienta se acabaron los problemas.

Para utilizarlo:

# Uso
vm {start|stop|acpistop|restart|savestate|status} vmName

# Ejemplos
vm start 'Windows 10'
vm stop 'Ubuntu 14'
...

He subido el script aquí.

Saludos! 🙂

Máquinas virtuales de Virtual Box por línea de comandos

Máquinas virtuales de Virtual Box por línea de comandos

Después de un tiempo sin escribir, dejo un pequeño script para arrancar y parar máquinas virtuales de Virtual Box desde línea de comandos. La máquina se arranca en segundo plano, es decir, sin ventana.

El script es el siguiente:

#!/bin/sh
case "$1" in  
  start)
    echo "Arrancando Ubuntu"
    vboxmanage startvm "Ubuntu" --type headless ;;   
  stop|graceful-stop) 
    echo "Parando Ubuntu"
    vboxmanage controlvm "Ubuntu" acpipowerbutton ;;
  *)
    echo "Usage: ubuntuvm {start|stop}"
    exit 3 ;; 
esac

exit 0 

He guardado este script en /usr/local/bin/ubuntuvm y lo utilizo así:

!/bin/sh 

# Arrancar 
ubuntuvm start 

# Parar
ubuntuvm stop 

Por supuesto, si se van a tener más máquinas virtuales se puede parametrizar un poco más para pasarle el nombre de la máquina virtual, pero para mí de momento es suficiente.

Otro día más! 🙂

Notificaciones de escritorio desde la consola

Notificaciones de escritorio desde la consola

El comando notify-send permite lanzar notificaciones de escritorio para informar de determinados eventos. Son mensajes como los que vemos cuando recibimos un email, cuando una descarga termina, cuando la batería se acaba y similares.

En ocasiones puede interesarnos que un script que hemos escrito nos lance algún aviso visible aunque no tengamos abierta una consola. Si no queremos tener que estar revisando los logs contínuamente para saber si nuestro evento se ha producido el comando notify-send puede resultarnos de gran utilidad.

Aquí un ejemplo de como se utiliza, pero para ver toda la información lo mejor es acudir al manual.

notify-send "Lampa Backup" "Websites backup successful." -i /usr/share/pixmaps/transmission.png

El fragmento anterior es un mensaje que tengo puesto yo en un script que me descarga backups del servidor donde tengo alojadas las webs cada semana. En próximas entregas os lo enseñaré por si os puede resultar útil. Pero antes os hablaré del comando crontab, que permite programar tareas para que se ejecuten periódicamente.

Pero para todo eso habrá que esperar, que ahora me voy a dormir :-).

Acceder por SSH sin utilizar la contraseña

Acceder por SSH sin utilizar la contraseña

Estos días me he visto en la necesidad de copiar archivos entre diferentes máquinas y he tenido que crear scripts para automatizar las tareas. Me he topado con un problema con el que no me había encontrado antes, y es que el comando scp pide al usuario que teclee la contraseña. ¿Cómo voy a programar una copia si no estoy delante del ordenador para introducir la contraseña?

En esta entrada voy a explicar cómo acceder a un servidor por SSH sin utilizar la contraseña. En su lugar, utilizaremos un par de claves pública y privada con el que nos identificaremos ante el servidor al que queremos conectarnos.

En primer lugar, generamos nuestras claves:

ssh-keygen -t rsa

Dejamos la contraseña en blanco. El programa generará una clave privada (que guardaremos en nuestra máquina) y una pública que daremos a diestro y siniestro. Estas claves se crean por defecto en la carpeta ~/.ssh.

Ahora hay que añadir nuestra clave pública al archivo authorized_keys del servidor remoto, que se encuentra también en la carpeta ~/.ssh del usuario que vamos a utilizar.

# Creamos la carpeta si no existe 
ssh usuario@10.0.1.23 mkdir -p .ssh
usuario@10.0.1.23's password:

# Vamos a nuestra home
cd

# Añadimos nuestra clave pública
cat $HOME/.ssh/id_rsa.pub | ssh usuario@10.0.1.23 "cat >> .ssh/authorized_keys" 
usuario@10.0.1.23's password:

Listo, si ahora accedemos de nuevo ya no nos volverá a pedir la contraseña.

Page 1 of 3 1 2 3