En este caso concreto tenía unos scripts que recaban información y necesitaba que me suministrasen un fichero por cada máquina donde se ejecutaban. Para ello se me ocurrieron varias alternativas:
- Que me lo enviasen por correo: instalando y configurando en cada PC un cliente de correo tipo mutt. Demasiado complicado.
- Que se guarde en algún servidor conectando por FTP, SCP, ... Me obliga a habilitar ese servicio en el servidor y buscar la manera de que se pueda guardar el fichero de manera no interactiva sin tener que poner contraseña .
- Hacer facters de puppet y dejar que el propio puppet recopile los datos y los guarde en el servidor en ficheros yaml con sus reports. Si es para algo que va a usarse mucho es una buena solución. Si es para algo rápido e infrecuente no merece la pena trabajarse el facter en Ruby.
- La elegida: escribir el fichero en un recurso Samba de acceso público, sin autenticación. Rápido y sucio, que solo requiere tener instalado smbclient en los PC donde se realiza.
En primer lugar la carpeta compartida de forma promiscua:
# cat /etc/samba/smb.conf
....
map to guest = Bad User
....
[almacen]
comment = Almacen IES
path = /home/almacen
writable = yes
browseable = yes
guest ok = yes
force directory mode = 0777
....
En esta carpeta cualquiera puede leer y escribir sin ningún tipo de autenticación, ideal para scripts que se ejecutan de forma autónoma por toda la red. Ahora vamos a ver un ejemplo de script, que guardará los datos (por ejemplo, nombre del PC y MAC de sus tarjetas de red) en la ruta /home/almacen/deposito y en un fichero con el mismo nombre que el PC:
#!/bin/bash
HOST=$(hostname)
echo "$HOST" > /tmp/$HOST
ifconfig -a | grep HW | awk '{print $5}' >>/tmp/$HOST
cd /tmp
smbclient -N //172.19.196.14/almacen -c "cd deposito; put $HOST"
exit 0
La clave está en:
smbclient -N //172.19.196.14/almacen -c "cd deposito; put $HOST"
Que conecta a al servidor situado en esa IP y al recurso "almacen" y ejecuta los comandos cd y put para subir el fichero al directorio indicado. Simple, efectivo, rápido y sucio. Lo tiene todo.
No hay comentarios:
Publicar un comentario