Solved

How to count users accessing to unix server

Posted on 2008-11-02
14
435 Views
Last Modified: 2013-12-27
I want to count how many users accessing our unix server.

The unix command should do the following :
i. list all users logged in to the server
ii. list of all users that their id , letsay any user id that has trailing id with "gues2008"
iii. simply count total users in (ii), but no duplication, ie, if there are more than one session user A had accessed, thenit shold considered as one.
iv. if possible , from the list (ii) can differentiate local access or remote access.

Thanks.
0
Comment
Question by:KG1973
  • 5
  • 3
  • 3
  • +3
14 Comments
 
LVL 1

Author Comment

by:KG1973
ID: 22862342
I had used finger command, but it doesn't tell us the total number of users.
0
 
LVL 84

Expert Comment

by:ozo
ID: 22862370
finger -l | grep '^Login:' | wc -l
0
 
LVL 68

Expert Comment

by:woolmilkporc
ID: 22862452
Hi,
1.)   'who'
2.) ???
3.) 'who | cut -f1 -d" " | sort | uniq | wc -l'

4.Look at the 4th column of 'who' output. You'll see there the hostnames (or addresses) the users come from.
0
Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
LVL 68

Expert Comment

by:woolmilkporc
ID: 22862479
Hi again,

try this one, perhaps its a step towards the answer to question 'ii' :

 lsuser -a gecos $(echo $(who | cut -f1 -d" " |sort | uniq) | tr " " ",")


0
 
LVL 68

Expert Comment

by:woolmilkporc
ID: 22862508
... and in case you don't like the 'gecos=' stuff, please:

 lsuser -a gecos $(echo $(who | cut -f1 -d" " |sort | uniq) | tr " " ",") | sed "s/gecos=//"
0
 
LVL 48

Accepted Solution

by:
Tintin earned 200 total points
ID: 22863231
i.   w
ii.  w | grep gue2008
iii.  who  |  awk '/gues2008/ {print $1}' | sort -u | wc -l
iv. Depends what you mean by 'local'.  Local as in from your network?  Directly connected to the server?
0
 
LVL 1

Author Comment

by:KG1973
ID: 22863528
Hence  the following users logged in to the system :
ABCgue2008
ABCgue2008
HIJgue2008
KLMgue2008
MNOgue2008
PQRgue2008
STUgue2008

if I type this command,  who | grep 'gue2008' | wc -l
This will give the total count of 7. But I don't want to count double entries ( ABCgue2008 ).
Thus the output should be 6.

So what cmd or flag should  I use ?
0
 
LVL 68

Assisted Solution

by:woolmilkporc
woolmilkporc earned 100 total points
ID: 22863536
'who | cut -f1 -d" "  | grep gue2008  | sort | uniq | wc -l'

0
 
LVL 48

Expert Comment

by:Tintin
ID: 22863559
See my answer (iii.) that I've already provided.
0
 
LVL 1

Author Comment

by:KG1973
ID: 22863981
Tintin,
Sorry I missed some flags, thats why it is not working when i try earlier.
Now I am repeating it again, It work. Thanks.
Can you explain what the argument " awk '/gues2008/ {print $1} '" do actually,  mean 1 by 1.
awk ?
{print $1} ?

Also i found that i can also use finger instead of who. Is there any distinctive diff ?

0
 
LVL 48

Expert Comment

by:Tintin
ID: 22864824
The /gues2008/ mean match any line that contains the string 'gues2008'.

print $1 means print the first field (in this case, the user column)
0
 
LVL 6

Expert Comment

by:peter991
ID: 22866013
$> last | grep "still logged in" | awk '{print $1}' | grep gues2008 | sort -u | wc -l
0
 
LVL 3

Expert Comment

by:Saranyakkali
ID: 22867135
The best and simple is check with " last "command.. why cont i gve you that script?

Thanks
0
 
LVL 68

Expert Comment

by:woolmilkporc
ID: 22867220
Hi,
the problem with 'last' is, when you do some pruning/shortening/archiving of your wtmp file, you will loose the records of users who have logged in a longer time ago and are still logged in.
wmp
0

Featured Post

Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

When you do backups in the Solaris Operating System, the file system must be inactive. Otherwise, the output may be inconsistent. A file system is inactive when it's unmounted or it's write-locked by the operating system. Although the fssnap utility…
My previous tech tip, Installing the Solaris OS From the Flash Archive On a Tape (http://www.experts-exchange.com/articles/OS/Unix/Solaris/Installing-the-Solaris-OS-From-the-Flash-Archive-on-a-Tape.html), discussed installing the Solaris Operating S…
Learn how to find files with the shell using the find and locate commands. Use locate to find a needle in a haystack.: With locate, check if the file still exists.: Use find to get the actual location of the file.:
In a previous video, we went over how to export a DynamoDB table into Amazon S3.  In this video, we show how to load the export from S3 into a DynamoDB table.

827 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question