Meine Aufgabe:
Schreiben Sie ein Programm, das nach einer bestimmten Zeitspanne Informationen über die Benutzer im System ausgibt: Wer ist eingetreten, wer hat es verlassen.
Ich habe versucht, es anders zu machen, indem ich zwei Dateien verglichen habe. Ich weiß nicht, wie gut ich das mache. comm
ist hier nicht sehr gut, ich weiß. Ich habe versucht, zu verwenden diff
, aber ihre Ausgabe auf der Konsole ist für mich unverständlich, und als ich versuchte diff -q
, bekam ich nur diese ZeileFiles 1.txt and 2.txt differ
Bitte hilf mir.
#!/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: oder besser so... keine Ahnung
#!/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
Antwort1
#!/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