shell腳本記錄登錄到本機的用戶,登錄時間和登錄位置

有這樣一個需求,記錄所有登錄用戶的信息,包括用戶名、登錄時間和登錄位置到/var/log/login

日誌的格式爲 username login_location login_time


需求分析:用戶的話無非就是root或者是普通用戶;

我可以用whoami或者echo $USER命令來查看當前的登錄用戶

[root@kissing ~]# echo $USER
root
[root@kissing ~]# whoami
root

而登錄時間的話,使用命令date就可以搞定

[root@kissing ~]# date +%y-%m-%d\ %H:%M:%S
13-09-21 00:20:40

而登錄位置的話,分兩種,一種是本地登錄,另一種是遠程登錄;如何判定用戶是從哪裏登錄呢?

[root@kissing ~]# w
00:39:25 up 30 min, 3 users, load average: 0.16, 0.22, 0.18
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.0.102 00:11 27:06 0.20s 0.20s -bash
root pts/1 192.168.0.102 00:12 10:35 0.19s 0.19s -bash
root pts/2 192.168.0.102 00:28 0.00s 0.11s 0.02s w

從這裏可以知道,使用w命令可以知道用戶登錄的位置還有終端,但是究竟哪個纔是當前用戶的對應的終端信息?

有四個管理員登錄,而且用戶都是root,所以我們無法用user匹配出爲宜信息,而不同的只能是tty可以匹配出唯一數據,

終端

------本地終端(tty1-tty6,圖形終端的話都是以:開頭的),將本地終端都歸爲本地登錄

-------遠程終端(ssh),遠程登錄的爲ip_address


登錄到linux上後,使用命令ps查看當前的進程

[root@kissing ~]# ps
PID TTY TIME CMD
2450 pts/2 00:00:00 bash
2485 pts/2 00:00:00 ps

可以知道我當前運行的進程是bash

[root@kissing ~]# ps | grep bash
2450 pts/2 00:00:00 bash

[root@kissing ~]# ps | grep bash | grep -v grep | awk '{print $2}'
pts/2



將這個腳本放在全局變量/etc/bashrc中,就可以實現,用戶已登錄,馬上就會被記錄的目的



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章