Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- use Compress::Zlib;
- use Socket;
- use Carp;
- sub loger;
- $fileUTM = shift;
- $home = "/mnt/dtr/stas/curr/532/";
- $logdir = "/var/log/netup53";
- $log = $logdir."/ds.log";
- opendir( DIRHANDLE, $logdir ) || die "Mount ERROR!";
- if ( $fileUTM eq "" ) {
- loger "No parametr!", "ERROR";
- }
- loger "$fileUTM", "START";
- open ( FH, "< $fileUTM" ) or loger " Error open file $fileUTM", "ERROR";
- binmode FH;
- read ( FH, $r1, 1 ); $r1 = unpack ( "%8C" , $r1 );
- read ( FH, $r2, 1 ); $r2 = unpack ( "%8C" , $r2 );
- for ( $i=1; $i<=$r2; $i++ ) {
- read ( FH, $r3, 1 ); $r3 = unpack ( "%8C" , $r3 );
- read ( FH, $r4, 1 ); $r4 = unpack ( "%8C" , $r4 );
- $types[$r3] = $r4;
- }
- read ( FH, $r5, 1 ); $r5 = unpack ( "%8C" , $r5 );
- for ( $j=1; $j<=$r5; $j++ ) {
- read ( FH, $r6, 1 ); $r6 = unpack ( "%8C" , $r6 );
- read ( FH, $r7, 1 ); $r7 = unpack ( "%8C" , $r7 );
- $sizes[$r6][1] = $r7; $sizes[$r6][2] = 1;
- for ( $k=1; $k<=$r7; $k++ ) {
- read ( FH, $r8, 1 ); $r8 = unpack ( "%8C" , $r8 );
- $sizes[$r6][2] = $sizes[$r6][2] + $types[$r8];
- $order[$r6][$k] = $r8;
- }
- }
- my ($prof_id, $n, $offset);
- while (($n = read FH, $prof_id, 1, $offset) != 0) {
- $prof_id = unpack ( "%8C" , $prof_id );
- foreach $c (1..@{$order[$prof_id]}-1)
- {
- read ( FH, $rec[$order[$prof_id][$c]], $types[$order[$prof_id][$c]] );
- }
- if ( $prof_id = 1 ) {
- $t_class = unpack ( "%32I" , $rec[103] );
- $account_id = unpack ( "%32I" , $rec[101] );
- $src_ip = inet_ntoa ( pack ( "N", unpack ( "%32l" , $rec[8] ) ) );
- $dst_ip = inet_ntoa ( pack ( "N", unpack ( "%32l" , $rec[12] ) ) );
- $bytes = unpack ( "%32I" , $rec[23] );
- $packets = unpack ( "%32I" , $rec[24] );
- $src_port = unpack ( "%16S" , $rec[7] );
- $dst_port = unpack ( "%16S" , $rec[11] );
- $proto = unpack ( "%8C" , $rec[4] );
- $slink_id = unpack ( "%32I" , $rec[100] );
- @time = localtime( unpack ( "%32I" , $rec[104] ) );
- $dirs=( $time[5]+1900 )."-".sprintf( "%02d", $time[4]+1 )."-".sprintf( "%02d", $time[3] );
- $time[2] = sprintf( "%02d", $time[2] ); $time[1] = sprintf( "%02d", $time[1] ); $time[0] = sprintf( "%02d", $time[0] );
- $dt = "$time[2]:$time[1]:$time[0]";
- $account_id = "$prof_id.$account_id.$slink_id";
- $arr{$account_id}{$dirs} .= "$dt\t$t_class\t$src_ip\t$src_port\t$dst_ip\t$dst_port\t$proto\t$packets\t$bytes\n";
- }
- }
- close FH;
- $i=0;
- foreach $k ( keys %arr ) {
- foreach $d ( keys %{$arr{$k}} ) {
- $dir = $home.$d;
- opendir( DIRHANDLE, $dir ) || mkdir( $dir, 0755 );
- open ( FH, ">>$dir/$k.gz" ) or loger " Error open file $home/$k.gz\n", "ERROR";
- print FH Compress::Zlib::memGzip( $arr{$k}{$d} );
- close FH;
- $i++;
- }
- }
- loger "account: $i", "OK";
- unlink ( $fileUTM ) or loger "File was not deleted.", "ERROR";
- exit 0;
- sub loger {
- $mess = shift;
- $error= shift;
- @time = localtime();
- $t = ( $time[5]+1900 ) . "-" . sprintf( "%02d", $time[4]+1 ) . "-" . sprintf( "%02d", $time[3] ) . " $time[2]:$time[1]:$time[0]";
- open ( FH, ">> $log" );
- print FH "$error: $t\n";
- print FH "$mess\n";
- close FH;
- if ( $error eq "ERROR" ) { exit 0; }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement