Ограничить загрузку веб-контента за одну минуту с одного IP-адреса (с iptables) [closed]

Самый простой способ получить список пользователей, которые не входили в систему за последние 15 дней, вместо того, чтобы получать его из / home использует команду lastlog

lastlog -b 15 

Просмотр строки вывода:

alumno1 pts / 14 172.17.1.114 Сб, 22 октября 22:18:57 +0100 2016

Если вам просто нужно имя (1-е поле):

lastlog -b 15 | sed "1d" | awk ' { print $1 } '

( sed "1d" если для удаления заголовка lastlog )

From man lastlog :

ОПЦИИ К команде lastlog применяются следующие параметры:

  -b, --before DAYS 
Печатать только записи lastlog старше, чем DAYS. 
 

Если пользователь никогда не входил в систему, вместо порта и времени будет отображаться сообщение ** Никогда не входил **.

Что касается фактического скрипта для проверки группы:

#!/bin/bash 

getent group alumnos > /dev/null
if [ $? -ne 0 ]
then
    echo "group alumnos does not exist"
    exit 1
fi

for i in ` lastlog -b 15 | sed "1d" | awk ' { print $1 } '`
do
    if [ `id -ng $i` == "alumnos" ]
    then
        echo $i
    fi
done
exit 0

где:
переменная i будет перебирать имена всех пользователей, указанные в lastlog
id -ng user дает имя группы пользователя, на которую указывает текущая итерация «$ i», чтобы
выпускники группы getent проверяли наличие группы

Что касается упомянутой вами ошибки if ; когда grep ничего не находит, он пропускает операнд и затем становится пустым; отсюда и ошибка.Один из приемов заключается в выполнении сравнения строк с дополнением «x», как в:

if [ "x"$i == "xstring" ]
then
   ...

Другая альтернатива проверке существования групповых выпускников:

if [ $(grep "^alumnos:" /etc/group) -e ]
then
    echo "No group alumnos"
    exit 1
fi

Еще одна альтернатива для проверки наличия пользователя с несколькими группами:

groups user | grep alumnos

2
07.10.2017, 23:21
0 ответов

Теги

Похожие вопросы