LINUX

Come montare una cartella WebDAV all’avvio su CentOS 6.x

Di recente ho avuto l’esigenza di montare una cartella WebDAV remota all’avvio di un sistema operativo Linux CentOS 6.x, per compiere via shell operazioni sul filesystem tramite procedure di ETL.

Schermata 2014-11-17 alle 17.52.39

Per risolvere il mio problema ho dovuto

  1. Installare un client WebDAV per Linux;
  2. Installare un software in grado di automatizzare alcune operazioni shell (Expect);
  3. Realizzare uno script per il montaggio della cartella WebDAV e configurarlo all’avvio.

Passo 1. Installazione Client WebDAV

davfs2 fornisce la possibilità di accedere a risorse remote come un file system locale, consentendone l’uso da parte delle applicazioni standard, che non hanno supporto integrato per WebDAV.

fonte: Linuxaria – http://linuxaria.com/howto/webdav-linux-davfs2?lang=it

cd /opt/
mkdir davfs
cd davfs/
# Download dei pacchetti
wget http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/davfs2-1.4.6-1.el6.rf.x86_64.rpm
wget http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
# Installazione
rpm -Uvh rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
yum install davfs2

Passo 2. Installazione Expect

Non sono riuscito a configurare davfs per lavorare senza password (ovvero memorizzando la password in file di conf). Essendo il tempo tiranno ho cercato qualcosa che mi consentisse di automatizzare l’esecuzione interattiva di uno script bash.

Chi cerca trova… mi sono imbattuto in Expect.

Expect è uno strumento di amministrazione di sistemi Unix-like per automatizzare applicazioni interattive quali SSH, SFTP, Telnet, etc.

fonte: Wikipedia – http://it.wikipedia.org/wiki/Expect

Per installarlo

yum install expect

Passo 3. Creazione script e configurazione all’avvio

Successivamente ho dovuto implementare uno script exp che montasse la cartella WebDAV in una cartella locale del file system

#!/usr/bin/expect
set timeout 20
spawn mount -t davfs http://<ip_server_webdav>/<app>/<path> /opt/webdav/ -o username=<user>
expect "Password:"
send "<password>\r";
interact

file /opt/scripts/mount_webdav.ex

Per una spiegazione dei comandi spawn, expect, send e interact vi rimando a questo tutorial su The Geek Staff.

Per finire ho fornito i permessi di esecuzione al file creato

cd /opt/scripts/
chmod 755 mount_webdav.ex

e modificato il file crontab inserendo lo script al riavvio

nano /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

@reboot  root  /opt/scripts/mount_webdav.ex

Alla prossima.