How can I write a shell script to filter the last command?
Clash Royale CLAN TAG#URR8PPP
up vote
0
down vote
favorite
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.
shell grep scripting last
New contributor
add a comment |
up vote
0
down vote
favorite
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.
shell grep scripting last
New contributor
3
Can't you dolast $username
for every user, and count the lines being returned? You will have to truncate the last 2 ones though. Also, be warned that thewtmp
file only holds records for a specific timeframe.
– Panki
Nov 19 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 echolast
>> 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 at 16:38
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
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.
shell grep scripting last
New contributor
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.
shell grep scripting last
shell grep scripting last
New contributor
New contributor
edited 2 days ago
Rui F Ribeiro
38.2k1475125
38.2k1475125
New contributor
asked Nov 19 at 16:08
Bakos Dominik
152
152
New contributor
New contributor
3
Can't you dolast $username
for every user, and count the lines being returned? You will have to truncate the last 2 ones though. Also, be warned that thewtmp
file only holds records for a specific timeframe.
– Panki
Nov 19 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 echolast
>> 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 at 16:38
add a comment |
3
Can't you dolast $username
for every user, and count the lines being returned? You will have to truncate the last 2 ones though. Also, be warned that thewtmp
file only holds records for a specific timeframe.
– Panki
Nov 19 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 echolast
>> 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 at 16:38
3
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 at 16:16
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 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 at 16:38
#!/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 at 16:38
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
accepted
#!/bin/bash
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.
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
accepted
#!/bin/bash
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.
add a comment |
up vote
0
down vote
accepted
#!/bin/bash
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.
add a comment |
up vote
0
down vote
accepted
up vote
0
down vote
accepted
#!/bin/bash
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.
#!/bin/bash
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.
answered Nov 20 at 8:54
Panki
42719
42719
add a comment |
add a comment |
Bakos Dominik is a new contributor. Be nice, and check out our Code of Conduct.
Bakos Dominik is a new contributor. Be nice, and check out our Code of Conduct.
Bakos Dominik is a new contributor. Be nice, and check out our Code of Conduct.
Bakos Dominik is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f482792%2fhow-can-i-write-a-shell-script-to-filter-the-last-command%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
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 thewtmp
file only holds records for a specific timeframe.– Panki
Nov 19 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 at 16:38