NFS REQUIRES PORT tcp 2049
### create dir for mount the nfs
mkdir -p /mnt/monitor
mount -t nfs [Link]:/mnt/Asterisk /mnt/monitor
ln -snf /mnt/monitor /var/spool/asterisk/monitor
###prueba mount -v -t nfs [Link]:/mnt/Asterisk /mnt
## agregarlo al /etc/fstab
[Link]:/mnt/Asterisk /var/spool/asterisk/monitor nfs
defaults,_netdev,soft,timeo=5,retrans=2 0 0
umount -l /var/spool/asterisk/monitor/
Crea un servicio systemd para monitorear el NFS
Crea un archivo de servicio, por ejemplo /etc/systemd/system/[Link]:
bash
Copy
Edit
[Unit]
Description=Monitoreo de NFS
After=[Link]
[Service]
Type=simple
ExecStart=/usr/local/bin/nfs_monitor.sh
Restart=on-failure
RestartSec=5
[Install]
WantedBy=[Link]
Crea el script nfs_monitor.sh
MOUNT_POINT="/var/spool/asterisk/monitor"
NFS_SERVER="[Link]"
MOUNT_PATH="/mnt/Asterisk"
LOG_FILE="/var/log/nfs_monitor.log"
while true; do
# Verifica si el NFS está accesible
if ! ping -c 2 $NFS_SERVER > /dev/null 2>&1; then
if mountpoint -q /var/spool/asterisk/monitor; then
echo "$(date '+%Y-%m-%d %H:%M:%S') - el servidor $NFS_SERVER es caido." >>
$LOG_FILE
echo "$(date '+%Y-%m-%d %H:%M:%S')- Desmontando $MOUNT_POINT." >>
$LOG_FILE
umount -l $MOUNT_POINT
fi
fi
sleep 5
done
/**** con enlace simbolico
#!/bin/bash
NAS_IP="192.168.x.x"
NAS_SHARE="$NAS_IP:/nfs/asterisk"
NAS_MOUNT="/mnt/monitor"
LOCAL_DIR="/var/spool/asterisk/monitor_local"
SYMLINK="/var/spool/asterisk/monitor"
mkdir -p "$LOCAL_DIR"
mkdir -p "$NAS_MOUNT"
# Verifica si el NAS está en línea
if ping -c 1 -W 1 "$NAS_IP" &>/dev/null; then
echo "[INFO] NAS disponible"
if ! mountpoint -q "$NAS_MOUNT"; then
mount -t nfs "$NAS_SHARE" "$NAS_MOUNT" && echo "[INFO] NAS montado"
fi
# Si symlink no apunta al NAS, cambiarlo y sincronizar
if [ "$(readlink "$SYMLINK")" != "$NAS_MOUNT" ]; then
echo "[INFO] Sincronizando grabaciones locales al NAS..."
rsync -av "$LOCAL_DIR/" "$NAS_MOUNT/" && rm -f "$LOCAL_DIR"/*
ln -snf "$NAS_MOUNT" "$SYMLINK"
echo "[INFO] Symlink actualizado a NAS"
fi
else
echo "[WARN] NAS no disponible"
if mountpoint -q "$NAS_MOUNT"; then
umount -l "$NAS_MOUNT" && echo "[INFO] NAS desmontado"
fi
# Si symlink no apunta al local, actualizarlo
if [ "$(readlink "$SYMLINK")" != "$LOCAL_DIR" ]; then
ln -snf "$LOCAL_DIR" "$SYMLINK"
echo "[INFO] Symlink redirigido a almacenamiento local"
fi
fi