PDA

View Full Version : script to keep trackk of my last login



ejodoin
05-11-2006, 07:02 PM
Hi,

I would like to edit my .bashrc to help me keep track of when I last logged on. I have my image set on my hard drive so my home directory is permanant. Now, I would like whenever I log it for the script to tell me when was the lat time I logged in, how many times I have loged in so far and record my new login time.


I was thinking of using a file to record the login date and a login counter but I don't know how to overwrite a file at every login with the new informatiion. Nor do I know how to read a file at log in to capture this information... Any ideas?


Thanks,

maxIT
05-11-2006, 07:20 PM
I guess you can put in your .bashrc something like:
lastlog | grep 'myusername' >> logfile.txt

not sure, not tested :oops:

ejodoin
05-11-2006, 07:36 PM
Here is what I have come up so far:

#set up the variable
declare -i logCounter=0
declare lastDate

#read the file


#Display the information for the user
echo -n "Your last login was on: "
echo $lastDate
echo
echo "You have login $logCounter time(s) so far."
echo

#Record the new information for next time
date | cat > .loginInfo
echo $logCounter | cat >> .loginInfo



As you can see all that I am missing is how to read the file properly. The 1st line is the date and the 2nd is the login counter. How can I read each line of the file into the variables?

ALSO, I am not sure if my way of recording the information is the most elegant and efficiant... So I would welcome any suggestions on this part as well

markb
05-11-2006, 11:28 PM
Typing "last ejodoin" is not sufficient? Either way, it may give you a tip for a better approach.

Dave_Bechtel
05-12-2006, 12:32 AM
Example:

' last dave |head '


dave pts/7 :0.0 Thu May 11 11:24 still logged in
dave pts/0 :0 Thu May 11 11:24 still logged in
dave pts/7 :0.0 Thu May 11 11:24 - 11:24 (00:00)
dave pts/2 :0.0 Thu May 11 10:48 - 11:24 (00:35)
dave pts/0 :0 Thu May 11 10:48 - 11:24 (00:35)
dave tty2 Thu May 11 10:48 still logged in
dave pts/9 :0.0 Wed May 10 23:43 - 01:51 (02:08)
dave pts/8 :0.0 Wed May 10 22:00 - 00:53 (02:53)
dave pts/8 :0.0 Wed May 10 21:08 - 21:59 (00:51)
dave pts/2 :0.0 Wed May 10 21:07 - 01:51 (04:44)



Hi,

I would like to edit my .bashrc to help me keep track of when I last logged on. I have my image set on my hard drive so my home directory is permanant. Now, I would like whenever I log it for the script to tell me when was the lat time I logged in, how many times I have loged in so far and record my new login time.


I was thinking of using a file to record the login date and a login counter but I don't know how to overwrite a file at every login with the new informatiion. Nor do I know how to read a file at log in to capture this information... Any ideas?


Thanks,

malaire
05-13-2006, 11:06 AM
Here is what I have come up so far:

#set up the variable
declare -i logCounter=0
declare lastDate

#read the file


#Display the information for the user
echo -n "Your last login was on: "
echo $lastDate
echo
echo "You have login $logCounter time(s) so far."
echo

#Record the new information for next time
date | cat > .loginInfo
echo $logCounter | cat >> .loginInfo



As you can see all that I am missing is how to read the file properly. The 1st line is the date and the 2nd is the login counter. How can I read each line of the file into the variables?

ALSO, I am not sure if my way of recording the information is the most elegant and efficiant... So I would welcome any suggestions on this part as well

I suggest you save the information like this: (ps. you don't need 'cat' here)

#Record the new information for next time
echo "lastDate=\"$(date)\"" > .loginInfo
echo "logCounter=\"$logCounter\"" >> .loginInfo


.loginInfo should now contain

lastDate="...the date..."
logCounter="...the number..."


which is valid bash-code. You can then include this bash-code to your script with

#read the file
source .loginInfo


which sets $lastDate and $logCounter to proper values.

You also need to increment logCounter at some point e.g. with

((logCounter = logCounter + 1))