#linux #bash #ubuntu
#linux #bash #ubuntu
Вопрос:
Я бы хотел, чтобы мой скрипт возвращал количество часов и минут, в течение которых пользователь входил в систему на сервере за последние 7 дней. Я написал сценарий ниже. Но он продолжает возвращать 0 часов, 0 минут. Буду признателен за любую помощь в том, где изменить, чтобы достичь моей цели.
#!/bin/sh
export LANG=C
grep "$(date "%Y-%m-%d")" /var/log/syslog
awk -v d1="$(date --date="-5 min" " %b %_d %H:%M")" -v d2="$(date " %b %_d %H:%M")" '$0 > d1 amp;amp; $0 < d2 || $0 ~ d2' /var/log/syslog
date_string=$(
who |
sort -k3M -k4n |
awk '{if ($1 ~ user) {print $3, $4, $5;exit}}' user="$1"
)
diff_seconds_between_date_and_now=$(
(
$(date %s) - $(date -d "$date_string" %s)
)
)
printf "Last $(id -u)"
printf " Since "
printf "%s %sn" "$((diff_seconds_between_date_and_now/604800)) day(s)"
printf " "
printf "%s %sn" "$((diff_seconds_between_date_and_now/3600)) hours" "$((diff_seconds_between_date_and_now600/60)) minutes"
Комментарии:
1. Вы вызываете grep без конвейера или сохранения результата
2. Пожалуйста, укажите способ обойти это
Ответ №1:
Рассмотрите возможность использования «последней» команды:
last -s '-7 days' username