СОРМ3 ТехАргос

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (21)

просмотр истории страницы
{toc}

h2. Сайт поставщика

[ТехАргос АПК "Вектор-ИС"|https://t-argos.ru/solutions/copm-3/573-vektor-is/]

h2. Какие справучники необходимы

Для интеграции с СОРМ компании ТехАгрос ТехАргос требуется сформировать следующие выгрузки:
-Справочник IP шлюзов Оператора связи, с которых получены записи о соединениях абонентов
-Данные по платежам абонентов Оператора связи
Для автоматического выполнения скриптов должна быть создана структура каталогов в контейнере asr_billing следующего формата: /cfg/sorm3/data/done/


h52. Справочник IP шлюзов Оператора связи, с которых получены записи о соединениях абонентов
Пусть до отчёта в контейнере asr_billing: /cfg/sorm3/tsql/nas.sql

h63. Структура отчёта nas

{code}
select distinct ' |' || id || ' |' , uf_ip2string(ip) || ' |' ,' |' ||' |' || STAT_FIRST_AUTH || ' |' ,' |' || name || ' |' ,' |' ||' |' ||' |' ||' |' ||' |' ||' |' ||' |' ||' |' ||' |' ||' |' ||' |'
from nas
where operator_id=3 or operator_id=23970
order by ID;
{code}

h63. Скрипт для выгрузки
{code}
#!/bin/bash
{code}


h52. Данные по платежам абонентов Оператора связи
Пусть до отчёта в контейнере asr_billing: /cfg/sorm3/tsql/payments.sql
h63. Структура отчёта payments.sql
{code}
set heading off; select


h63. Скрипт для выгрузки
{code}
#!/bin/bash
{code}

h5. Справочник способов оплаты Оператора связи, с которых получены записи о соединениях абонентов

h2. Данные с планами IP-нумерации сети

h63. Скрипт для выгрузки
{code}
#!/bin/sh
LOGFILE=/app/asr_billing/mnt/var/cfg/sorm3/Log/IpNumeringPlan.log
file_date=$(date +%Y%m%d_%H%M)
printf '\n\n###################################################\n' >> $LOGFILE 2>&1
date | iconv -f utf8 -t cp1251 >> $LOGFILE 2>&1
GateDate=$(date "+%s")
patchconf="/app/asr_billing/mnt/var/cfg/sorm3/sh/IpNumeringPlan.conf"
count_or=$( awk -F= 'NR==1 {printf $2}' $patchconf)
count=$(($count_or+1))
newcount=$(printf "%04d" $count)
count=$(($count_or+1))
sed -i -e "1s/${count_or}/${count}/" $patchconf
telco_id="100"

filename=${newcount}_IpNumeringPlan_${GateDate}.txt
ftpconf="/app/asr_billing/mnt/var/cfg/sorm3/sh/ftp.conf"
ftpconf="/app/asr_billing/mnt/var/cfg/sorm3/sh/ftp.conf"
ftpip=$( awk -F= 'NR==1 {printf $2}' $ftpconf)
ftplogin=$( awk -F= 'NR==2 {printf $2}' $ftpconf)
ftppass=$( awk -F= 'NR==3 {printf $2}' $ftpconf)



function main
{
(grep -i '^.subnet' /app/collector/mnt/etc/dhcp/dhcpd.conf | awk -v telco_id=$telco_id '{ print $1=telco_id"|"$2"|" $2"|"$4"|"$6"20.05.2016| " }' > /app/asr_billing/cfg/sorm3/data/${filename}) || echo error


if [ -f /app/asr_billing/cfg/sorm3/data/${filename} ]
then
actualsize=$(wc -c < /app/asr_billing/cfg/sorm3/data/${filename})
if [ $actualsize -gt 0 ];
then
printf 'Метаданные файла\n' >> $LOGFILE 2>&1
ls -l /app/asr_billing/cfg/sorm3/data/${filename} >> $LOGFILE 2>&1
printf 'Количество строк в файле: ' >> $LOGFILE 2>&1 && cat /app/asr_billing/cfg/sorm3/data/${filename} | wc -l >> $LOGFILE 2>&1
cp /app/asr_billing/cfg/sorm3/data/${filename} /app/asr_billing/cfg/sorm3/data/done/IpNumeringPlan/${filename}
curl --upload-file /app/asr_billing/cfg/sorm3/data/${filename} ftp://$ftplogin:$ftppass@$ftpip/ >> $LOGFILE 2>&1 && rm -rf /app/asr_billing/cfg/sorm3/data/${filename}
else
printf 'error' >>$LOGFILE 2>&1 && rm -rf /app/asr_billing/cfg/sorm3/data/${filename}

fi
fi







}
echo "Выгрузка номер $newcount" >> $LOGFILE 2>&1
main 2>&1 | tee -a $LOGFILE
{code}


h2. Справочник способов оплаты Оператора связи, с которых получены записи о соединениях абонентов

h3. Скрипт для выгрузки
{code}
#!/bin/sh
LOGFILE=/app/asr_billing/mnt/var/cfg/sorm3/Log/pay_Types_Records.log
file_date=$(date +%Y%m%d_%H%M)
{code}

h6. Структура отчёта ttexpdbusrs_abonents


h2. Данные по абонентам Оператора связи
Пусть до отчёта в контейнере asr_billing: /cfg/sorm3/tsql/ttexpdbusrs_abonents.sql
h3. Структура отчёта ttexpdbusrs_abonents

{code}
set heading off;

where a.parent_id not in (244)
and a.parent_id not in (25416)
and a.parent_id not in (25322)
and a.parent_id not in (19902)
and a.parent_id not in (24013)
and a.parent_id not in (23995)
and a.parent_id not in (2)
and a.parent_id not in (8606)
and a.parent_id not in (19892)
and a.parent_id not in (25625)
and a.is_folder=0
and a.deleted=0
and a.id is not null
and u.nas_id not in (1137)
and u.nas_id not in (1138)
and u.nas_id not in (1122)
order by a.ID;

{code}

h3. Скрипт для выгрузки
{code}
#!/bin/bash
LOGFILE=/app/asr_billing/mnt/var/cfg/sorm3/Log/ttexpdbusrs.log
file_date=$(date +%Y%m%d_%H%M)
printf '\n\n###################################################\n' >> $LOGFILE 2>&1
date | iconv -f utf8 -t cp1251 >> $LOGFILE 2>&1
GateDate=$(date "+%s")
patchconf="/app/asr_billing/mnt/var/cfg/sorm3/sh/ttexpdbusrs.conf"
count_or=$( awk -F= 'NR==1 {printf $2}' $patchconf)
count=$(($count_or+1))
newcount=$(printf "%04d" $count)
sed -i -e "1s/${count_or}/${count}/" $patchconf
filename=Abonents_00330_${GateDate}_${newcount}.txt
ftpconf="/app/asr_billing/mnt/var/cfg/sorm3/sh/ftp.conf"
ftpip=$( awk -F= 'NR==1 {printf $2}' $ftpconf)
ftplogin=$( awk -F= 'NR==2 {printf $2}' $ftpconf)
ftppass=$( awk -F= 'NR==3 {printf $2}' $ftpconf)

function main
{
(chroot /app/asr_billing/ isql-fb 169.254.30.50:/var/db/billing.gdb -p servicem -u SYSDBA -i /cfg/sorm3/tsql/ttexpdbusrs_abonents.sql | sed '/^$/d'| sed 's/ */ /g' | iconv -f utf8 -t cp1251 > /app/asr_billing/cfg/sorm3/data/${filename}) || echo error

if [ -f /app/asr_billing/cfg/sorm3/data/${filename} ]
then
actualsize=$(wc -c < /app/asr_billing/cfg/sorm3/data/${filename})
if [ $actualsize -gt 0 ];
then
printf 'Метаданные файла\n' >> $LOGFILE 2>&1
ls -l /app/asr_billing/cfg/sorm3/data/${filename} >> $LOGFILE 2>&1
printf 'Количество строк в файле: ' >> $LOGFILE 2>&1 && cat /app/asr_billing/cfg/sorm3/data/${filename} | wc -l >> $LOGFILE 2>&1
cp /app/asr_billing/cfg/sorm3/data/${filename} /app/asr_billing/cfg/sorm3/data/done/ttexpdbusrs/${filename}
curl --upload-file /app/asr_billing/cfg/sorm3/data/${filename} ftp://$ftplogin:$ftppass@$ftpip/ >> $LOGFILE 2>&1 && rm -rf /app/asr_billing/cfg/sorm3/data/${filename}
else
printf 'error' >>$LOGFILE 2>&1 && rm -rf /app/asr_billing/cfg/sorm3/data/${filename}

fi
fi

}
echo "Выгрузка номер $newcount" >> $LOGFILE 2>&1
main 2>&1 | tee -a $LOGFILE
{code}