Advertisement
Guest User

Untitled

a guest
Feb 21st, 2020
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.54 KB | None | 0 0
  1. convert_time () {
  2.         a="$@"
  3.  
  4.         sec=${a:13:2}
  5.         min=${a:10:2}
  6.         hour=${a:7:2}
  7.         time="$hour$min$sec"
  8.         time=${time#00000}
  9.         time=${time#0000}
  10.         time=${time#000}
  11.         time=${time#00}
  12.         time=${time#0}
  13.         echo "$time"
  14. }
  15.  
  16. input="/var/backup/testfile" #preparation phase
  17. inputnumber=4
  18.  
  19. firstline=$(head -n 1 "$input")
  20. numberoflines=$(wc -l "$input" | cut -d ' ' -f 1)
  21.  
  22. lineID1=1
  23. lindID2=0
  24.  
  25. glcount=0
  26. blcount=0
  27.  
  28. declare -a linesoffile
  29. linesoffile[0]="$firstline"
  30. declare -a badlines
  31. declare -a linesofsecond
  32.  
  33.  
  34. while IFS= read -r line
  35. do
  36.  
  37. linesoffile[$lineID1]="$line"
  38.  
  39. starttime=$( convert_time $line )
  40.  
  41. time2=$( convert_time ${linesoffile[$(( lineID1-1 ))]} )
  42.  
  43. if [[ $(( starttime-time2 )) -gt $inputnumber ]] #phase one
  44. then
  45.     badlines[$blcount]="$time2"
  46.     blcount=$(( blcount+1 ))
  47.     badlines[$blcount]="$starttime"
  48.     blcount=$(( blcount+1 ))
  49. else
  50.     glcount=$(( glcount+1 ))
  51. fi
  52. lineID1=$((lineID1+1))
  53. done < "$input"
  54. #echo  " File scanned! Total lines: $numberoflines. Number of times that match was detected: $blcount"
  55.  
  56. if [[ $blcount -eq 0 ]] #phase two
  57. then
  58.     echo " The file doesnt have missing logs set by the time difference: $inputnumber"
  59. else
  60. compare="/var/backup/testfile2"
  61. numberoflcompare=$(wc -l "$compare" | cut -d ' ' -f 1)
  62.  
  63. while IFS= read -r line
  64. do
  65.         time2=$( convert_time $line )
  66.         for (( i=1; i<=$blcount; i++ ))
  67.         do
  68.                 if [[ ${badlines[$(( i-1 ))]} -le $time2 ]] && [[ ${badlines[$i]} -ge $time2 ]]
  69.                 then
  70.                         linesofsecond[$lineID2]="$line"
  71.             lineID2=$((lineID2+1))
  72.                 fi
  73.         done
  74. done < "$compare"
  75. #echo " Second file's scan is complete! Total lines: $numberoflcompare.  Number of lines detected between the missing timestamps: $lineID2."
  76.  
  77. x=1 #pahse three
  78. y=0
  79. for (( i=1; i<$lineID1; i++ ))
  80. do
  81.     time1=$( convert_time ${linesoffile[$(( i-1 ))]} )
  82.     time2=$( convert_time ${linesoffile[$i]} )
  83.     if [[ ${badlines[$(( x-1 ))]} -eq $time1 ]] && [[ ${badlines[$x]} -eq $time2 ]]
  84.     then
  85.         time3=$( convert_time ${linesofsecond[$y]} )
  86.         while [[ ${badlines[$x]} -ge $time3 ]] && [[ ${badlines[$(( x-1 ))]} -le $time3 ]] || [[ ${linesofsecond[$y]} -ne ${linesofsecond[$(( y-1 ))]}
  87.         do
  88.             echo "${linesofsecond[$y]} --"
  89.             y=$(( y+1 ))
  90.             time3=$( convert_time ${linesofsecond[$y]} )
  91.         done
  92.         x=$(( x+2 ))
  93.     else
  94.         #glcount=0
  95.         echo "${linesoffile[$i]} |"
  96.     fi
  97. done #>> /var/backup/testfile3
  98. #echo " Combination complete! new file: \var\backup\testfile3"
  99. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement