Archivo

Entradas Etiquetadas ‘CRON’

Sustituyendo NFS por sistema de archivos 9p de KVM

lunes, 4 de mayo de 2020 Sin comentarios

En una de las máquinas virtuales tenía funcionando dos aplicaciones que hacían uso intensivo de lectura/escritura de información que tengo almacenada en una unidad NFS. Toda esa actividad acababa generando un consumo considerable de CPU y, de alguna forma, mayor actividad en los discos duros de lo que sería normal.

Opté por añadir un sistema de ficheros compartido entre el sistema anfitrión e invitado para intentar no poner por medio el servicio NFS. El sistema de ficheros sería de tipo «mapped» lo que nos llevaría a una serie de inconvenientes en cuanto a permisos en los ficheros creados pero que nos dejaría escribir sin mayores problemas:

<filesystem type=»mount» accessmode=»mapped»>
<source dir=»/mnt/unidadCompartida»/>
<target dir=»unidadCompartida»/>
<alias name=»fs0″/>
<address type=»pci» domain=»0x0000″ bus=»0x00″ slot=»0x08″ function=»0x0″/>
</filesystem>

Para montar la unidad en el sistema invitado sólo hay que añadir la siguiente línea en el fichero «/etc/fstab»:

unidadCompartida /mnt/unidadCompartida 9p trans=virtio,version=9p2000.L,cache=mmap,rw 0 0

Hay que tratar de recordar añadir las opciones de «version=9p2000.L,cache=mmap» para evitar problemas con aplicaciones como «rtorrent» cuyo log nos devolvería lo siguiente:

Could not create: memory:524288 block:1 errno:22 errmsg:Invalid argument.

Para arreglar el tema de permisos en la carpeta compartida, como desde un primer momento no tuve la previsión de hacerlo de este modo, lo arreglé con una pequeña tarea en el Cron del sistema anfitrión:

*/15 * * * * /bin/chmod 777 -R /mnt/unidadCompartida/

De este modo, cada 15 minutos, se le otorga permisos a todo el mundo sobre el contenido de dicha carpeta para que otras máquinas puedan acceder a él sin problemas. Obviamente, se tiene que saber lo qué se hace y almacena en dicha carpeta, porque un 777 abarca mucho.

Script ejecutado en el arranque de Linux

jueves, 3 de mayo de 2018 Sin comentarios

En aquellos casos en los que queremos automatizar alguna tarea o simplemente lanzar un script al inicio del sistema y no queremos profundizar en la edición de ficheros de configuración de servicio, no bastará con programar CRON a través de su editor (crontab -e) de la siguiente forma:

@reboot /path/to/script

Categories: GNU/Linux Tags:

DNS dinámicas con DigitalOcean y su API v2.0

lunes, 7 de julio de 2014 Sin comentarios

Si queremos tener accesible nuestra Raspberry a través de una conexión a Internet que nos provee una IP dinámica, podemos hacer uso de la API de DigitalOcean para configurar un subdominio que vaya cambiando su IP a la par que la nuestra.

Para ello deberemos crear un nuevo token desde el panel de administración de DigitalOcean, algo parecido a una especie de hash.

Después crearemos un nuevo registro de tipo A en el gestor de DNS que podemos llamar «home», con lo que nuestro dominio dinámico será algo así como «home.midominio.com».

Después haremos un script en nuestra Raspberry que tenga el siguiente aspecto:

!/bin/bash
var_token=»nuestroToken»
var_domain=»midominio.com»
var_record_id=»elIDdeHome»
var_ip=$(curl -s icanhazip.com)

## Devuelve las últimas acciones realizadas ##
#curl -X GET «https://api.digitalocean.com/v2/actions» \
# -H «Authorization: Bearer $var_token»
## Devuelve la información sobre el dominio ##
#curl -X GET «https://api.digitalocean.com/v2/domains/$var_domain/records» \
# -H «Authorization: Bearer $var_token»

## Cambia la IP del dominio ##
curl -X PUT «https://api.digitalocean.com/v2/domains/$var_domain/records/$var_record_id» \
-d'{«data»:»‘$var_ip'»}’ \
-H «Authorization: Bearer $var_token» \
-H «Content-Type: application/json»

Los únicos valores que tendremos que cambiar serán var_token (el token que hemos generado en el paso anterior), var_domain (el dominio que nos interesa modificar) y el var_record_id (un valor que deberemos recuperar).

Entonces, nuestra IP external la obtendremos gracias al servicio de «icanhzip.com» que soporta IPv4 e IPv6. El siguiente valor que nos interesa recuperar será el identificador del registro A de «home», que se obtiene ejecutando el siguiente script:

!/bin/bash
var_token=»nuestroToken»
var_domain=»midominio.com»

curl -X GET «https://api.digitalocean.com/v2/domains/$var_domain/records» \

-H «Authorization: Bearer $var_token»

Una vez editado el script con toda ésta información sólo nos quedará programarlo en Cron. Para ello ejecutaremos como root el siguiente comando:

crontab -e

Añadiremos la ruta hasta nuestro script y la información para que se ejecute todos los días cada 5 horas:

# Actualiza la IP en DigitalOcean
* */5 * * * /opt/dynamicDNS/dns-digitalocean.sh > /dev/null 2>&1 | logger «Digital Ocean – Updating IP»

 

No olvidar instalar Curl en Raspbmc si no lo tenéis ya:

apt-get install curl

 

 

Direcciones de interés:

Información relativa a la API v2 de DigitalOcean

Manual Básico de Cron

 

 

SSH sin contraseña

miércoles, 16 de marzo de 2011 1 comentario

Resulta muy útil en procesos automatizados el poder conectar a los equipos vía SSH sin que una persona tenga que introducir manualmente la contraseña. Si, por ejemplo, queremos que nuestro servidor central recoja todas las copias de seguridad del resto de servidores, que pueden o no estar en nuestra red local, de forma que todas las noches esté programado en CRON y se use el comando SCP.

Para realizar dicha conexión sin el uso de una contraseña que deba ser escrita, necesitaremos primero generar una clave pública ejecutando el siguiente comando dejando vacío el «passphrase» que nos pide:

ssh-keygen -t rsa

Hay que tener en cuenta que el comando anterior lo deberemos lanzar con el usuario con el que queramos usar la conexión.

Posteriormente copiaremos el contenido del fichero generado con extensión «.pub» al siguiente fichero en la máquina remota:

/root/.ssh/authorized_keys

O, si no se trata del usuario «root»:

/home/nombreUsuario/.ssh/authorized_keys

 

Categories: GNU/Linux Tags: , , ,