Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #### Переменные ####
- # Путь к файлу логов OpenVPN
- logfiledir='/script/openvpn'
- # Имя файла логов OpenVPN
- logfile='openvpn.log'
- # Путь к файлу с первичными результатами парсинга
- tmpfiledir='/tmp'
- # Имя файла с первичными результатами парсинга
- tmpfile='tmp_base.log'
- # Путь к файлу с конечными результатами
- datafiledir='/script/openvpn'
- # Имя файла с конечными результатами
- datafile='base.log'
- #### Построение списка пользователей
- # Файл с первичными результатами
- userfile_tmp='parce.tmp'
- # Файл с промежуточными результатами
- userfile2_tmp='parce2.tmp'
- # Файл с конечными результатами
- resultfile='result_search.log'
- #### ПАРСЕР ЛОГА OpenVPN ####
- # Проверка "если НЕ несуществует"
- if ! [ -d $datafiledir/$datafile ]; then
- rm -rf $datafiledir/$datafile
- fi
- awk -F " " '{print $1 " " $2 " " $3 " " $4 " " $5 " " $7 " " $8 " " $9 " " $10}' $logfiledir/$logfile |grep -e 'Peer Connection Initiated' -e 'Inactivity timeout' -e 'Connection reset' > $tmpfiledir/555
- # Убрать кавычк [] из файла
- tr -d [] < $tmpfiledir/555 >> $tmpfiledir/$tmpfile
- # построчное чтение файла, замена даты
- FILE=$tmpfiledir/$tmpfile
- while read line; do
- T=`echo $line |cut -d ' ' -f 2,3,5`
- D=`date -d "$T" "+%d-%m-%Y"`
- T2=`echo $line |cut -d ' ' -f 4`
- T3=`echo $line |cut -d ' ' -f 6-12`
- echo $D $T2 $T3 >> $datafiledir/$datafile
- done < $FILE
- rm -rf $tmpfiledir/$tmpfile
- rm -rf /tmp/555
- #### Текстовое меню ####
- clear
- echo
- echo "[1] Просмотреть весь журнал"
- echo
- echo "[2] Поиск по журналу"
- echo
- echo "[3] Список пользователей"
- echo
- echo "[4] Пробить по базе Zabbix"
- echo
- echo "[0] Выход"
- read doing
- case $doing in
- 1)
- clear
- cat $datafiledir/$datafile
- ;;
- 2)
- clear
- echo "Поиск"
- echo
- echo "[1] По Имени пользователя"
- echo
- echo "[2] По Дате"
- echo
- echo "[3] Активность за сегодняшний день"
- read doing2
- case $doing2 in
- 1)
- clear
- echo
- echo "Введите имя пользователя"
- echo
- read username
- clear
- echo
- echo "Вести поиск $username по дате?"
- echo
- echo "y/n"
- read s1
- case $s1 in
- n)
- clear
- cat $datafiledir/$datafile |grep $username
- exit 0
- ;;
- y)
- clear
- echo
- echo "Введите дату в формате ДД-ММ-ГГГГ "
- echo
- read data1
- clear
- grep -E "$data1.*$username" $datafiledir/$datafile
- exit 0
- ;;
- *)
- clear
- echo
- echo "Введено неправильное действие"
- exit 1
- ;;
- esac
- ;;
- 2)
- clear
- echo
- echo "Введите дату в формате ДД-ММ-ГГГГ"
- echo
- read data1
- clear
- grep -E "$data1" $datafiledir/$datafile
- ;;
- 3)
- clear
- data2=`date +"%d-%m-%Y"`
- grep -E "$data2" $datafiledir/$datafile
- ;;
- *)
- clear
- echo
- echo "Введено неправильное действие"
- exit 1
- ;;
- esac
- ;;
- 3)
- awk -F " " '{print $3}' $datafiledir/$datafile |sort|uniq
- ;;
- 4)
- clear
- echo
- echo [1] Поиск по всей базе
- echo
- echo [2] Поиск в журнале логов VPN по дате
- echo
- echo [3] Поиск в базе Zabbix по дате
- echo
- echo [4] Активность за сегодняшний день
- echo
- read doing3
- clear
- case $doing3 in
- 1)
- clear
- echo
- echo "Построение списка пользователей..."
- echo
- awk -F " " '{print $3}' $datafiledir/$datafile |sort|uniq|sed '/Connection/d' >> $tmpfiledir/$userfile_tmp
- sed '/tc/d' < $tmpfiledir/$userfile_tmp >> $tmpfiledir/$userfile2_tmp
- rm -rf $tmpfiledir/$userfile_tmp
- echo "Поиск в базе Zabbix..."
- FILE=$tmpfiledir/$userfile2_tmp
- while read line; do
- echo "Поиск пользователя $line"
- us1=%$line%
- cmd="SELECT value,logeventid,from_unixtime(clock) FROM history_log WHERE value LIKE '$us1';"
- mysql -h 128.28.248.1 -u auditor -p1 -e "$cmd" -D zabbix > $tmpfiledir/$resultfile
- done < $FILE
- rm -rf $tmpfiledir/$userfile2_tmp
- echo
- echo "Ок, результаты поиска записаны в $tmpfiledir/$resultfile"
- exit 0
- ;;
- 2)
- clear
- echo
- echo "Введите начальную дату в формате ДД-ММ-ГГГГ "
- echo
- echo
- read data1
- echo
- echo "Введите конечную дату в формате ДД-ММ-ГГГГ "
- echo
- echo
- read data2
- clear
- echo "Поиск по диапазону $data1 -- $data2"
- Y1=`echo $data1|cut -d '-' -f 3`
- M1=`echo $data1|cut -d '-' -f 2`
- D1=`echo $data1|cut -d '-' -f 1`
- DD1=`echo $Y1$M1$D1`
- Y2=`echo $data2|cut -d '-' -f 3`
- M2=`echo $data2|cut -d '-' -f 2`
- D2=`echo $data2|cut -d '-' -f 1`
- DD2=`echo $Y2$M2$D2`
- echo "Построение списка пользователей..."
- FILE=$datafiledir/$datafile
- while read line; do
- P1=`echo $line |cut -d ' ' -f 1`
- Y3=`echo $P1 |cut -d '-' -f 3`
- M3=`echo $P1 |cut -d '-' -f 2`
- D3=`echo $P1 |cut -d '-' -f 1`
- DD3=`echo $Y3$M3$D3`
- # $DD3 Больше или равно $DD1
- if [[ $DD3 -ge $DD1 ]]; then
- # $DD3 меньше или равно $DD2
- if [[ $DD3 -le $DD2 ]]; then
- echo $line >> $tmpfiledir/tmp.tmp
- fi
- fi
- done < $FILE
- exit 0
- ;;
- 3)
- clear
- echo
- echo "Введите дату в формате ДД-ММ-ГГГГ"
- echo
- read data1
- clear
- echo
- echo "Построение списка пользователей..."
- echo
- awk -F " " '{print $3}' $datafiledir/$datafile |sort|uniq|sed '/Connection/d' >> $tmpfiledir/$userfile_tmp
- sed '/tc/d' < $tmpfiledir/$userfile_tmp >> $tmpfiledir/$userfile2_tmp
- rm -rf $tmpfiledir/$userfile_tmp
- echo "Поиск в базе Zabbix..."
- FILE=$tmpfiledir/$userfile2_tmp
- while read line; do
- echo "Поиск пользователя $line"
- us1=%$line%
- Y1=`echo $data1|cut -d '-' -f 3`
- M1=`echo $data1|cut -d '-' -f 2`
- D1=`echo $data1|cut -d '-' -f 1`
- dt2="%$Y1-$M1-$D1%"
- cmd="SELECT value,logeventid,from_unixtime(clock) FROM history_log WHERE value LIKE '$us1' AND from_unixtime(clock) LIKE '$dt2';"
- mysql -h 128.28.248.1 -u auditor -p1 -e "$cmd" -D zabbix > $tmpfiledir/$resultfile
- done < $FILE
- rm -rf $tmpfiledir/$userfile2_tmp
- echo
- echo "Ок, результаты поиска записаны в $tmpfiledir/$resultfile"
- exit 0
- ;;
- *)
- clear
- echo
- echo "Введено неправильное действие"
- exit 1
- ;;
- esac
- clear
- ;;
- 0)
- exit 0
- ;;
- *)
- clear
- echo
- "Введено неправильное действие"
- exit 1
- ;;
- esac
- exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement