Скрипт Bash для возврата часов и минут, когда пользователь зарегистрирован

#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