Guest User

Untitled

a guest
Jan 17th, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.01 KB | None | 0 0
  1. #!/bin/sh
  2.  
  3. date +'%d.%m.%Y %H:%M:%S'
  4.  
  5. cd /opt/ftp/default/cdr
  6. if [ -z "$(ls -A /opt/ftp/default/cdr)" ]; then
  7. echo "dir empty"
  8. else
  9. for f in *.dat;
  10. do
  11. perl /home/i.vaskin/perl/final.pm /opt/ftp/default/cdr/$f /opt/ftp/default/cdr_parsed/$f.csv
  12. rm -f /opt/ftp/default/cdr/$f
  13. done
  14.  
  15. sleep 5;
  16. /usr/bin/lftp -e "mirror -R --no-perms /opt/ftp/default/cdr_parsed/ /cdr/atc; bye;" -u usr,pswd 192.168.7.15
  17.  
  18. sleep 30;
  19. mv -f /opt/ftp/default/cdr_parsed/* /opt/bak_cdr_pars/
  20. fi
  21.  
  22. */29 * * * * /bin/sh /home/i.vaskin/perl_cdr.sh >> /home/i.vaskin/every_29min.log 2>&1
  23.  
  24. #*/30 * * * * /bin/sh /home/i.vaskin/perl_cdr.sh >> /home/i.vaskin/perl_cdr_2.log 2>&1
  25.  
  26. i.vaskin@sorm3:~$ cat perl_cdr_2.log
  27. 17.01.2019 09:30:01
  28. final.pm: parser initialized, files open
  29. final.pm: parser initialized, files open
  30. final.pm: parser initialized, files open
  31. mirror: Access failed: Directory location is undefined (/opt/ftp/default/cdr_parsed)
  32.  
  33. i.vaskin@sorm3:~$ cat every_29min.log
  34. 17.01.2019 10:58:01
  35. final.pm: parser initialized, files open
  36. final.pm: parser initialized, files open
  37. final.pm: parser initialized, files open
  38. final.pm: parser initialized, files open
  39. 17.01.2019 11:00:01
  40. dir empty
  41. 17.01.2019 11:29:01
  42. final.pm: parser initialized, files open
  43. final.pm: parser initialized, files open
  44. final.pm: parser initialized, files open
  45. final.pm: parser initialized, files open
  46. final.pm: parser initialized, files open
  47.  
  48. #!/usr/bin/perl
  49.  
  50. use strict;
  51. use FindBin;
  52. use lib $FindBin::Bin;
  53. require "parser_utils.pm";
  54. use vars qw($inf $outf $DEBUG);
  55. use Date::Calc qw(Mktime);
  56. use POSIX;
  57. use Scalar::Util qw(reftype);
  58.  
  59. my $input_name = shift;
  60. my $output_name = shift;
  61. my $log_name = shift;
  62.  
  63. my $logf;
  64. $DEBUG = 1;
  65.  
  66. &open_log($log_name);
  67. &open_files($input_name, $output_name);
  68.  
  69. =pod
  70. #answer_time = 11 a6 (6b)
  71. #end_time = 17 a6 (6b)
  72. #caller_number = 30 H16 (8b)
  73. #called_number = 49 H16 (8b)
  74. #..
  75. #trunk_group_in = 77 S (2b)
  76. #trunk_group_out = 79 S (2b)
  77. #service_type = 86 C (1b)
  78.  
  79. #maybe..... supplementary_service_type = 92 S (2b)
  80.  
  81. #termination_code = 87 C (1b)
  82. #dialed_number = 139 H16 (8b)
  83. #redirecting_number = 540 H16 (8b)
  84. =cut
  85.  
  86.  
  87. sub fix_numbers{
  88. my $number = shift;
  89. $number = length($number) == 6 ? "78422" . $number : $number;
  90. $number = length($number) == 11 && unpack('A1',$number) == "8" ? 7 . substr($number, 1, 10) : $number;
  91. $number = length($number) == 10 ? 7 . $number : $number;
  92. return $number
  93. }
  94.  
  95. my $record;
  96. while(read ($inf, $record, 907))
  97. {
  98. my ($csn, $start_time, $end_time, $duration_old, $caller_number, $called_number, $trunk_group_in, $trunk_group_out,
  99. $service_type, $termination_code, $dialed_number, $redirecting_number, $test)
  100. = unpack('L x7 a6 a6 L x3 H16 x11 H16 x20 S S x5 C C x15 H16 x28 H16 H*', $record);
  101. my @start_time = unpack('C[6]', $start_time);
  102. my @end_time = unpack('C[6]', $end_time);
  103. $caller_number =~ s/f.*$//;
  104. $called_number =~ s/f.*$//;
  105. $dialed_number =~ s/f.*$//;
  106. $redirecting_number =~ s/f.*$//;
  107. $start_time[0] = 2000+$start_time[0];
  108. $end_time[0] = 2000+$end_time[0];
  109. my $duration = Mktime(@end_time) - Mktime(@start_time);
  110. $start_time = sprintf('%02d.%02d.%d %02d:%02d:%02d', $start_time[2], $start_time[1],
  111. $start_time[0], $start_time[3], $start_time[4], $start_time[5]);
  112. $end_time = sprintf('%02d.%02d.%d %02d:%02d:%02d', $end_time[2], $end_time[1],
  113. $end_time[0], $end_time[3], $end_time[4], $end_time[5]);
  114. $caller_number = fix_numbers($caller_number);
  115. $called_number = fix_numbers($called_number);
  116. $dialed_number = fix_numbers($dialed_number);
  117. $redirecting_number = fix_numbers($redirecting_number);
  118. print $outf join("t", "1", $start_time, $duration, $service_type, "50", "1", "1", "softx3000", $trunk_group_in,
  119. $trunk_group_out, $termination_code+600, $caller_number, $dialed_number, $called_number
  120. , "");
  121. print $outf "n";
  122. }
Add Comment
Please, Sign In to add comment