Отображение пользователей, которые вошли в систему, которые вышли из системы

Отображение пользователей, которые вошли в систему, которые вышли из системы

Мое задание:

Напишите программу, которая выводит информацию о пользователях в системе через определенный интервал времени: кто вошёл, кто вышел.

Я пробовал сделать это по-другому, сравнивая два файла. Я не знаю, насколько хорошо я это делаю. commздесь не очень хорошо, я знаю. Я пробовал использовать diff, но ее вывод в консоль для меня непонятен, а когда я пробовал diff -q, я получил только эту строкуFiles 1.txt and 2.txt differ

Пожалуйста, помогите мне.

#!/bin/bash
while (true) do
who > 1.txt
sleep 10s
who > 2.txt
(comm -13 1.txt 2.txt) > 3.txt
(comm -23 2.txt 1.txt) > 4.txt
echo IN :
cat 3.txt 
echo OUT :
sleep 10s
cat 4.txt 
echo [______________________________________________________________]
done

upd: или лучше так..не знаю

#!/bin/bash
while (true) do
who > 1.txt
sleep 10s
who > 2.txt
(comm -13 1.txt 2.txt) > 3.txt
echo IN :
cat 3.txt 
echo OUT :
sleep 10s
who > 2.txt
(comm -23 3.txt 2.txt) > 4.txt
cat 4.txt 
echo [______________________________________________________________]
done

решение1

#!/bin/bash
who >1.txt
sleep 10
who >2.txt
awk 'NR==FNR{a[$1];next}!($1 in a){print $1}' 1.txt 2.txt >3.txt

awk 'BEGIN{print "Below are the New users logged in now "}{print $0}' 3.txt

echo "=========================="

awk 'NR ==FNR {a[$1];next}!($1 in a){print $1}' 2.txt 1.txt > 4.txt


awk 'BEGIN{print "Below are the user who logged out now"}{print $0}' 4.txt

Связанный контент