Доброго дня, о великие гуру астериска ! С прошедшими праздниками и с возвращением !
Поделитесь пожалста, кому не жалко, скриптиком, вытаскивающим записи разговоров из /var/spool/asterisk/monitor куда нибудь на сервер(например по sftp, али просто по шаре) и расфасовывающим их по разным папкам (например по дате и по номеру А). Премного благодарен !
на PHP. не так элегантно, но на bash вышеуказанный скрипт у меня не заработал...
<?php
$to="/usr/local/www/apache22/data/voices/records/";
$from="/var/spool/asterisk/monitor/";
function SearchMaska($dir, $maska){
if (is_dir($dir)) {
foreach(array_diff(scandir($dir), array('.', '..')) as $file) {
if($myfile = stristr($file, $maska, true))
$arr[]=$myfile.".mp3";
}
}
if (isset($arr)) return $arr;
}
$arr=SearchMaska($from, '.mp3');
if (isset($arr))
{
foreach ($arr as $file) {
if (!is_dir($to.date('Y', filemtime($from.$file)))) mkdir($to.date('Y', filemtime($from.$file)));
if (!is_dir($to.date('Y/m', filemtime($from.$file)))) mkdir ("$to".date('Y/m', filemtime($from.$file)));
if (!is_dir($to.date('Y/m/d', filemtime($from.$file)))) mkdir ("$to".date('Y/m/d', filemtime($from.$file)));
rename($from.$file, $to.date('Y/m/d/', filemtime($from.$file)).$file);
}
}
?>
срабатывает по факту окончания записи
требует apt-get install incron
# cat /etc/incron.d/rec
/var/spool/asterisk/monitor IN_CLOSE_WRITE /etc/init.d/recdir $@ $# $%
#cat /etc/init.d/recdir
#!/bin/sh
#
# обработка событий incron
mdir=$1
ddir=$mdir # kyda perenosit
log="/var/log/recdir.log"
datadir=`date +%Y_%m_%d`
echo "$datadir -- $1 $2 $3" >> $log
if [ $3 = "IN_CLOSE_WRITE" ];
then
pd=`pwd`
cd $mdir
if [ ! -d $ddir/$datadir ];
then
echo "created dir" >> $log
mkdir -p $ddir/$datadir
chmod o+r $ddir/$datadir
fi
echo "moved " >> $log
mv $2 $ddir/$datadir/
chmod o+r $ddir/$datadir/$2
cd $pd
fi
FreePBX 2.10 сама расфасовывает файлы по папкам
Simple mode. Перемещает файлы в другую примотированную директорию , расфасовывая по папкам от времени создания файла записи.
#!/bin/bash
DIR_TO=/mnt/nfs
AST_RECS=/var/spool/asterisk/monitor
for i in $AST_RECS/*.wav;do
if [ -f $i ];then
sub_dir=$(date -d @`stat --printf='%X' $i` +"%Y-%m-%d")
if [ ! -d $DIR_TO/$sub_dir ];then mkdir $DIR_TO/$sub_dir;fi
mv $AST_RECS/$i $DIR_TO/$sub_dir/$i
fi
done;
exit;
несколько строк - 2 минуты. Базовый уровень.
Задан: Jan 9 '13
Просмотрен: 2,741 раз
Обновлен: Mar 20 '13
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
А самому на bash'е написать сложно?
zzuz (Jan 9 '13)edit