Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

расфасовка записей из /var/spool/asterisk/monitor

0

Доброго дня, о великие гуру астериска ! С прошедшими праздниками и с возвращением !

Поделитесь пожалста, кому не жалко, скриптиком, вытаскивающим записи разговоров из /var/spool/asterisk/monitor куда нибудь на сервер(например по sftp, али просто по шаре) и расфасовывающим их по разным папкам (например по дате и по номеру А). Премного благодарен !

удалить закрыть спам изменить тег редактировать

спросил 2013-01-09 14:54:27 +0400

nana_MeDBeD Gravatar nana_MeDBeD
312 46 11 34

Comments

А самому на bash'е написать сложно?

zzuz ( 2013-01-09 15:08:13 +0400 )редактировать

4 Ответа

1

на 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);
}
}
?>
ссылка удалить спам редактировать

ответил 2013-03-20 17:12:40 +0400

BlackSnow Gravatar BlackSnow
11 1 1 1

Comments

офигительно. ну ты хоть кешировщик какой загрузи. кстати желаю удачи как наберется 1000+ файликов в директории.

meral ( 2013-03-20 17:25:59 +0400 )редактировать

скрипт раз в час выполняется, можешь свой вариант предложить. у меня примерно по 1000 файлов в день и получается - никаких проблем, * собран на атоме.

BlackSnow ( 2013-03-20 17:33:03 +0400 )редактировать

ну если ваших клиентов раз в час устраивает - нет вопросов. вообще обычно такие скрипты пишуться на основе скрипта вызываемого mixmonitor по окночанию записи. примеров в сети - полно. но писать такое на php - это жесть.

meral ( 2013-03-20 18:20:46 +0400 )редактировать

я сам и есть клиент =) можно и его вызывать после окончания записи =) на php - потому, что на другом писать не умею =(

BlackSnow ( 2013-03-27 15:11:35 +0400 )редактировать
1
срабатывает по факту окончания записи
требует 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
ссылка удалить спам редактировать

ответил 2013-03-20 18:30:57 +0400

astin1317 Gravatar astin1317
21 6 1 7

обновил 2013-03-20 18:34:11 +0400

Comments

скрипт работает 3 года без напоминаний о себе

astin1317 ( 2013-03-20 19:35:06 +0400 )редактировать
0

FreePBX 2.10 сама расфасовывает файлы по папкам

ссылка удалить спам редактировать

ответил 2013-01-14 17:32:11 +0400

romariosar Gravatar romariosar flag of Russian Federation
588 93 11 44
http://www.webunix.ru/
0

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 минуты. Базовый уровень.

ссылка удалить спам редактировать

ответил 2013-01-09 15:18:39 +0400

zzuz Gravatar zzuz flag of Russian Federation
7174 2 6 75
http://line24.ru/

обновил 2013-01-09 15:20:10 +0400

Comments

хренасе симпл. три уровня вложенности шела.

meral ( 2013-01-09 15:43:17 +0400 )редактировать

1 цикл итераций , 2 вложенных условия.

zzuz ( 2013-01-09 15:51:28 +0400 )редактировать

я имею в виду строчку с sub_dir. условия то все в одном шеле.

meral ( 2013-01-09 15:52:37 +0400 )редактировать

Могу еще на Питоне готовый показать , так там вообще в несколько потоков перемещения файлов с последующим параллельным конвертированием) . Но автору думаю многовато будет)

zzuz ( 2013-01-09 15:56:18 +0400 )редактировать

чисто программирование ради программирования?

meral ( 2013-01-09 15:58:07 +0400 )редактировать

а с sub_dir да , придумалось для того случая когда , файл конвертируется несколько секунд в промежутке времени 23:59:59 - 00:00:01 . Тогда БД его найти не сможет , так как время конвертирования и время создания файла разные , точнее даты разные.

zzuz ( 2013-01-09 15:59:56 +0400 )редактировать

а я проще сделал: отдельный скрипт ночью раскладывает по каталогам все файлы, а при просмотре отчетов запускается другой простой скрипт-индексатор, который просматривает еще не индексированные каталоги и добавляет это все в БД. Потом вытаскиваем это в каком надо виде и все.

switch ( 2013-01-09 16:49:35 +0400 )редактировать

ну у каждого свои идеи. я во всех системах в cdr прописываю файл куда пишется в самом диалплане. а дальше в один поток перекодирую и заменяю имя если переносится в другой каталог. в некоторых системах перекодирование выполняется на внешних ec2 ami типа spot.

meral ( 2013-01-09 17:22:07 +0400 )редактировать

в старой системе не перекодирую, а вот в новой есть желание сделать mp3 с разделением на правый и левый каналы.

switch ( 2013-01-09 17:36:02 +0400 )редактировать

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку
3 закладки

подписаться на rss ленту новостей

Статистика

Задан: 2013-01-09 14:54:27 +0400

Просмотрен: 2,727 раз

Обновлен: Mar 20 '13

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.