Script mugitzeko Asterisk dei erregistroak RAM

RAM Asterisk gordetako dei erregistro Moving

Artikulu hau script hobetu batek fitxategiak mugitzeko aurkezten (Kasu honetan, telefono deiak Asterisk bidez egin) fitxategiak unturned irekia (Egiten ari diren deiak). Oso tipikoa da deien grabazioak egiteko Asterisk from Call Center a adibidez dute.

Para hacer este script he utilizado como base uno que encontré hemen, gracias a su autor.

zer kolore esan aplikazioak eta Sistema hasi aurretik Gogorarazi:

Komando lerroan idatzitako testuak: blue
Komando lerro irteera: Verde
Fitxategi-izenak eta fitxategi edukia: marroiak

Justificación

Asterisk es un software de telefonía (muy utilizado en VoIP) que permite construir una centralita telefónica con múltiples funcionalidades, entre ellas la grabación de llamadas. Normalmente, por cuestiones de rendimiento, las grabaciones de llamadas las realizamos sobre una unidad RAM, o disco RAM (si queréis saber cómo crear uno podéis seguir este esteka), para luego, al cabo de ciertos intervalos de tiempo, almacenarlas definitivamente en una unidad de disco, adibidez, en un servidor NAS. De esta forma, también evitamos el deterioro que supone en la unidad de disco el continuo esfuerzo de escritura por la grabación de múltiples llamadas.

Claro que esto supone un riesgo; una falla eléctrica y se pierden las grabaciones. Por eso conviene guardar de cuando en cuando esas grabaciones en un lugar definitivo.

Este script lo he adaptado a mis necesidades. Todas las grabaciones se guardan en un subdirectorio que se crea cada día, con la fecha del mismo, en formato gsm. El script va buscando inicialmente ese subdirectorio, mira dentro de él los archivos que no están siendo utilizados, y finalmente los mueve a su ubicación definitiva.

Si no tuviésemos la precaución de mirar primero si están siendo utilizados o no, se podrían mover archivos incompletos, con la pérdida de información que ello supone.

Desarrollo

El script que propongo y que a mí me funciona 😉 es el siguiente:


#!/bin/bash
# Para mover las llamadas grabadas en una unidad RAM
# Revisa el contenido de esa unidad y lo pasa a un disco duro
# tenemos un directorio en esa unidad,
# con subdirectorios que se generan diariamente
## Variables con los directorios a utilizar
RAMDIR="/tmp/discoram"
ALMACEN="/mnt/servidor_almacen" #unidad remota, previamente montada, almacén definitivo
cd $RAMDIR
ls -1d */ > listado.borrable
while read dia #cada línea un directorio diario, se extrae del archivo "listado_borrable"
do # aquí empieza la parte de mover archivos en sí, solo los de sonido formato gsm
for i in $(ls -1 $RAMDIR/$dia/*.gsm) ; do
lsof  $i #comprueba los archivos abiertos para no moverlos todavía
valor=$? #estado de salida, si es 0 el archivo está abierto
if [ $valor -ne 0 ] ; then
if [ -d $ALMACEN/$dia ] ; then
echo carpeta de grabaciones comprobada
else
mkdir $ALMACEN/$dia
#solo crea la carpeta si es necesario
fi
mv $i $ALMACEN/$dia
fi
done
rmdir $dia 2> /dev/null #si queda vacía la borramos
done < listado.borrable #aqui termina el while

 

Lo podéis descargar de hemen si os es más cómodo.

No olvidéis opinar y aportar vuestras soluciones personalizadas, siempre se puede mejorar.


Buruz Angel Calvo

Zientzia eta teknologia sutsua. Irakaslea, eskuliburuak eta sistemak eta komunikazioak manager egileak.

Utzi erantzuna