I want to write a script for login statistics. I want to count how many times a user logged in, and then display them in ascending, or descending order, given by the end user. The problme being, i don't know how to write a script that could count how many times a user logged in. I have to use the last command.

  • 3
    Can't you do last $username for every user, and count the lines being returned? You will have to truncate the last 2 ones though. Also, be warned that the wtmp file only holds records for a specific timeframe. – Panki Nov 19 '18 at 16:16
  • #!/bin/bash echo '1 - ascending, 0 - descending, please choose:' read x echo 'how many lines do you need?:' read y if [ $x -eq 1 ]; then echo last >> last.txt fi after I have the last.txt file, i need to count how many times one user logged in, then put the data in ascending/descending order. At the end, I have to display A certain amount of lines, strating from 1. Can't really figure out how to do it.. – Bakos Dominik Nov 19 '18 at 16:38
userlist=$(cat /etc/passwd | cut -d : -f 1)
for user in $userlist; do
        timesloggedin=$(last $user | head -n -2 | wc -l);
        echo $timesloggedin $user;
done | sort -r

This gets the name of ALL the users on the system, including daemon accounts etc. If you don't want that, supply userlist with a list of your usernames. To get the output in ascending order, drop the -r flag to sort.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.