martes, 7 de octubre de 2014

Automatizar Samba mediante scripts

Una de las facetas más útiles e importantes es poder realizar copias de nuestros archivos en repositorios remotos Samba. Pero lo más interesante es hacerlo de forma automática, sin una intervención humana. Esto toma gran relevancia a la hora de gestionar backups o copias de seguridad.

Mediante la herramienta smbclient podemos conectar remotamente con Samba, ofreciéndonos una consola de comandos especial para lanzar los comandos específicos de Samba. Pero esto, obviamente, requiere una sesión Samba y una interacción con el usuario para cada comando. Y lo que necesitamos es realizar de forma automática todas estas tareas.

Lo primero que tenemos que hacer es lanzar smbclient para que se conecte de forma automática a través de un fichero de configuración que contiene los datos de conexión. Normalmente, este fichero se llama .smbclient, a fin de tener una coherencia de nombre y porque dicho fichero aparece oculto. Este fichero ha de contener la siguiente configuración:

username=usuario_samba
password=contraseña
domain=grupo_trabajo

Para que smbclient se conecte al repositorio de Samba de forma automática, debe indicarse el fichero de configuración de la siguiente manera:

sudo smbclient //SERVIDOR/repositorio -A .smbclient

donde "SERVIDOR" será la IP o el nombre del servidor en donde está Samba, y "repositorio" será el nombre del repositorio al que se quiere acceder.

Ahora viene lo más interesante: ejecutar la secuencia de comandos de smbclient sin intervención humana. Esto se consigue si añadimos el parámetro -c seguido de una cadena de texto con la secuencia de comandos smbclient, separados con punto y coma (;).

sudo smbclient //SERVIDOR/repositorio -A .smbclient -c "comando1; comando2; ..."

He aquí un ejemplo:

sudo smbclient //192.168.98.200/mirepositorio -A .smbclient -c "cd Backups/LDAP; lcd /home/miusuario/backups/ldap; recurse; prompt; mput *; exit;"

Los comandos más utilizados de smbclient son los siguientes:

  • cd: Cambia de directorio en el repositorio Samba
  • lcd: Cambia de directorio local (en nuestra máquina)
  • ls [máscara]: Muestra el contenido del directorio actual (en Samba)
  • mget [máscara]: Descarga desde directorio actual en Samba, los archivos que coincidan con la máscara, y los aloja en el directorio actual en local.
  • mput [máscara]: Sube desde el directorio actual en local, los archivos que coincidan con la máscara, y los aloja en el directorio actual en Samba.
  • recurse: Realiza la transferencia de archivos mget/mput de forma recursiva.
  • prompt: Omite la confirmación de cada operación en cada fichero.
  • exit: Abandona smbclient.
  • help [comando]: Muestra la ayuda.