19 enero 2016

Diario (II)

Continuamos, al final después de varias pruebas y lecturas (muy útil el siguiente enlace para el tema ssh-keys [en español] [en ingles]). He decidido utilizar ssh sin passphrase y un usuario nuevo que no tenga permisos para ejecutar comandos como root (los famosos sudoers). Este usuario nuevo lo llamare por ejemplo oficina_palma. Vamos al tema. Lo primero será crear el usuario en la Raspberry que me hará de servidor: adduser oficina_palma Introducimos la contraseña que queramos y luego dejamos por defecto todas las opciones que nos van apareciendo. Ahora en la raspberry cliente generamos un par de claves:
ssh-keygen -t rsa -C "Oficina Palma"
Cuando nos pregunte por la passphrase lo dejamos vacío, lo mismo que para el nombre de archivo y ubicación predeterminados. Llegados aquí se han creado los archivos id_rsa e id_rsa.pub. El segundo es la clave publica que copiaré en el servidor. Para hacerlo:
scp ~/.ssh/id_rsa.pub oficina_palma@xxx.xxx.xxx.xxx:
Donde xxx.xxx.xxx.xxx es la dirección ip del servidor. Ojo con los dos puntos finales.
Ahora accedemos al servidor vía ssh con el usuario recién creado:
ssh oficina_palma@xxx.xxx.xxx.xxx
El archivo de claves publicas estará en nuestra home. Lo movemos al directorio oculto .ssh, creamos el archivo authorized_keys al que añadimos las líneas correspondientes a la clave pública. Y luego cambiamos los permisos.
mkdir ~/.ssh
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub
chmod 600 ~/.ssh/authorized_keys
chmod go-w ~/.ssh

Para acabar creo un directorio en la carpeta www llamado oficina_palma que es donde subiré todos los archivos que me interesan. Para hacerlo, escribo en el servidor:
sudo mkdir /var/www/oficina_palma
sudo chown -R oficina_palma:oficina_palma /var/www/oficina_palma/

Y listo, ya podemos seguir con nuestro script. Al que solamente añado la ultima linea para hacer una copia en nuestro servidor del texto con la IP, quedaría así:
#!/bin/bash
# Este archivo lo llamamos ipp.sh
actualIP=$(curl -s icanhazip.com)
sleep 30
ultimaLinea=$(tail -n 1 ipp.txt)
ultimaIP=$(expr match "$ultimaLinea" '.*ipp \(.*\)')
if [ "$actualIP" != "$ultimaIP" ];
    then
       echo $(date) "ipp" $a >> ipp.txt
       scp ipp.txt oficina_palma@xxx.xxx.xxx.xxx:/var/www/oficina_palma
fi

Continuamos en otro momento.