Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- ##### Основные переменные #####
- logfile='proftpd.log'
- logdir='/var/log/proftpd'
- basedir='/root/ftp'
- basename='users'
- i=0
- ## Проверка наличия основных директорий и файлов ##
- ## Очистка базы ##
- if [ -d /tmp/users.txt ]; then
- rm -R /tmp/users.txt
- fi
- ##### Считываем файл лога FTP-сервера #####
- awk -F " " '{print $4 " " $8 " " $9" "$10}' $logdir/$logfile |grep 'Login successful' > /tmp/1.txt
- awk -F " " '{print $2}' /tmp/1.txt > /tmp/2.txt
- rm -R /tmp/1.txt
- rev /tmp/2.txt |cut -c2- |rev > /tmp/3.txt
- rm -R /tmp/2.txt
- ##### Считываем построчно файл с пользователями #####
- ##### Пишем количество подключений юзеров из базы в файл #####
- FILE=$basedir/$basename
- FILE2=/tmp/3.txt
- while read line; do #Считывается строка из базы пользователей FTP
- #echo "$line" >> /tmp/line
- IN1=`echo $line | awk '{print $2}'` # Количество разрешенных коннектов
- #echo "$IN1" >> /tmp/IN.txt
- IN2=`echo $line | awk '{print $1}'` # Имя пользователя
- while read line2; do # Считывается строка из лога коннектов
- if [[ $IN2 == $line2 ]]; # Сравниваем строку из базы со строкой из лога. При совпадении, счетчик i увеличивается на 1
- then
- let "i = i+1"
- fi
- #echo "$line2" >> /tmp/line2
- done < $FILE2
- echo "$line" "$i" >> /tmp/users.txt
- if [[ $i -ge $IN1 ]]; then
- passwd -l $IN2
- echo "Учетная запись $IN2 заблокирована" >> /var/log/proftpd/blocked.log
- fi
- i=0
- done < $FILE
- rm -R /tmp/3.txt
- exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement