Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- date +'%d.%m.%Y %H:%M:%S'
- cd /opt/ftp/default/cdr
- if [ -z "$(ls -A /opt/ftp/default/cdr)" ]; then
- echo "dir empty"
- else
- for f in *.dat;
- do
- perl /home/i.vaskin/perl/final.pm /opt/ftp/default/cdr/$f /opt/ftp/default/cdr_parsed/$f.csv
- rm -f /opt/ftp/default/cdr/$f
- done
- sleep 5;
- /usr/bin/lftp -e "mirror -R --no-perms /opt/ftp/default/cdr_parsed/ /cdr/atc; bye;" -u usr,pswd 192.168.7.15
- sleep 30;
- mv -f /opt/ftp/default/cdr_parsed/* /opt/bak_cdr_pars/
- fi
- */29 * * * * /bin/sh /home/i.vaskin/perl_cdr.sh >> /home/i.vaskin/every_29min.log 2>&1
- #*/30 * * * * /bin/sh /home/i.vaskin/perl_cdr.sh >> /home/i.vaskin/perl_cdr_2.log 2>&1
- i.vaskin@sorm3:~$ cat perl_cdr_2.log
- 17.01.2019 09:30:01
- final.pm: parser initialized, files open
- final.pm: parser initialized, files open
- final.pm: parser initialized, files open
- mirror: Access failed: Directory location is undefined (/opt/ftp/default/cdr_parsed)
- i.vaskin@sorm3:~$ cat every_29min.log
- 17.01.2019 10:58:01
- final.pm: parser initialized, files open
- final.pm: parser initialized, files open
- final.pm: parser initialized, files open
- final.pm: parser initialized, files open
- 17.01.2019 11:00:01
- dir empty
- 17.01.2019 11:29:01
- final.pm: parser initialized, files open
- final.pm: parser initialized, files open
- final.pm: parser initialized, files open
- final.pm: parser initialized, files open
- final.pm: parser initialized, files open
- #!/usr/bin/perl
- use strict;
- use FindBin;
- use lib $FindBin::Bin;
- require "parser_utils.pm";
- use vars qw($inf $outf $DEBUG);
- use Date::Calc qw(Mktime);
- use POSIX;
- use Scalar::Util qw(reftype);
- my $input_name = shift;
- my $output_name = shift;
- my $log_name = shift;
- my $logf;
- $DEBUG = 1;
- &open_log($log_name);
- &open_files($input_name, $output_name);
- =pod
- #answer_time = 11 a6 (6b)
- #end_time = 17 a6 (6b)
- #caller_number = 30 H16 (8b)
- #called_number = 49 H16 (8b)
- #..
- #trunk_group_in = 77 S (2b)
- #trunk_group_out = 79 S (2b)
- #service_type = 86 C (1b)
- #maybe..... supplementary_service_type = 92 S (2b)
- #termination_code = 87 C (1b)
- #dialed_number = 139 H16 (8b)
- #redirecting_number = 540 H16 (8b)
- =cut
- sub fix_numbers{
- my $number = shift;
- $number = length($number) == 6 ? "78422" . $number : $number;
- $number = length($number) == 11 && unpack('A1',$number) == "8" ? 7 . substr($number, 1, 10) : $number;
- $number = length($number) == 10 ? 7 . $number : $number;
- return $number
- }
- my $record;
- while(read ($inf, $record, 907))
- {
- my ($csn, $start_time, $end_time, $duration_old, $caller_number, $called_number, $trunk_group_in, $trunk_group_out,
- $service_type, $termination_code, $dialed_number, $redirecting_number, $test)
- = unpack('L x7 a6 a6 L x3 H16 x11 H16 x20 S S x5 C C x15 H16 x28 H16 H*', $record);
- my @start_time = unpack('C[6]', $start_time);
- my @end_time = unpack('C[6]', $end_time);
- $caller_number =~ s/f.*$//;
- $called_number =~ s/f.*$//;
- $dialed_number =~ s/f.*$//;
- $redirecting_number =~ s/f.*$//;
- $start_time[0] = 2000+$start_time[0];
- $end_time[0] = 2000+$end_time[0];
- my $duration = Mktime(@end_time) - Mktime(@start_time);
- $start_time = sprintf('%02d.%02d.%d %02d:%02d:%02d', $start_time[2], $start_time[1],
- $start_time[0], $start_time[3], $start_time[4], $start_time[5]);
- $end_time = sprintf('%02d.%02d.%d %02d:%02d:%02d', $end_time[2], $end_time[1],
- $end_time[0], $end_time[3], $end_time[4], $end_time[5]);
- $caller_number = fix_numbers($caller_number);
- $called_number = fix_numbers($called_number);
- $dialed_number = fix_numbers($dialed_number);
- $redirecting_number = fix_numbers($redirecting_number);
- print $outf join("t", "1", $start_time, $duration, $service_type, "50", "1", "1", "softx3000", $trunk_group_in,
- $trunk_group_out, $termination_code+600, $caller_number, $dialed_number, $called_number
- , "");
- print $outf "n";
- }
Add Comment
Please, Sign In to add comment