最近老板沉迷抖音,时不时在那边傻笑,偷偷过去看一看,好家伙,他在看朱一次~今天,老板悄悄的走到我面前,淡淡的告诉我,梁旭,如果你能在公司找到浑水摸鱼的人,我给你加薪!我转过头,看着他像朱曾一样无聊的笑脸,自信地说,你放心,有我在,公司里就没有渔夫了!作为资深垂钓达人,熟知108种钓法和18种躲避领导突击检查的方法。所以,任何想钓鱼的人,都逃不过我那双锐利的眼睛。作为一名Linux程序员,每天都要和服务器打交道,所以想知道谁在钓鱼,只需要关注他的两个指标:登录系统的次数和登录时长进入系统。Linux系统为我们提供了很多非常有用的命令。当然,还有一些命令可以用来查看系统的每个用户登录系统的次数,以及系统使用的总时间。用户的信息保存在/var/log/wtmp文件中,所以我们可以通过一些简单的命令提取出我们想要的信息。这个信息就是钓鱼的证据!使用last命令获取用户登录信息可用于此目的的一个命令是last命令。该命令可以列出用户登录的详细信息,可以追溯。它的典型输出如下:头-5|tr-s""liangxupts/0192.168.0.14WedJan1409:44stillloggedinliangxupts/0192.168.0.14WedJan1409:41-09:41(00:00)liangxupts/0192.168.0.14WedJan1409:40-09:41(00:00)alexpts/1192.168.0.18WedJan1409:38stillloggedinliangxupts/0192.168.0.14TueJan1306:15-18:18(00:24)上述命令中,tr-s""表示将多个空格合并为一个,可以节省空间。如果不添加tr命令,其输出将类似于以下内容:$last|head-5liangxupts/0192.168.0.14WedJan1409:44仍然记录inliangxupts/0192.168.0.14WedJan1409:41-09:41(00:00)liangxupts/0192.168.0.14WedJan1409如果last命令和上面一样没有任何参数,它会列出所有用户的登录信息。如果只想查看某个用户的登录状态,只需要在last后面加上具体的用户名即可,即:$lastusername这里也加上了head-5命令,其作用是只列出最后一条命令的结果的前5条消息。如果不加这条命令,结果会很长。我们可以使用wc命令来看一下:$last|wc-l这样,通过last命令就可以看到大家的登录状态了。钓鱼的朋友请收下!第一招:统计每个用户的登录次数在上一条命令的结果中,用户每次登录都会产生一条记录,所以这里我们可以利用这些记录来统计每个用户的登录次数。$用于`ls/home`中的用户;做echo-ne"$user\t";最后$用户|wc-l;doneorothy21dory13eel29jadep124jdoe27jimp42alex9shark17liangxu423test2waynek201在上面的命令中,我们首先获取主目录下的所有用户,然后使用last命令获取他们的登录状态,然后使用wc命令统计他们的登录次数.当然,为了查大家的登陆次数,每次都敲那么长的命令,实在是让人抓狂。所以更好的办法是直接把这个命令写成shell脚本,下次我们要用的时候直接运行就可以了。我们可以新建一个show_user_logins.sh脚本,然后用vim编写如下:#!/bin/bashecho-n"Loginssince"who/var/log/wtmp|头-1|awk'{print$3}'echo"======================="foruserin`ls/home`doecho-ne"$user\t"最后一个$user|wc-ldonewrite完成后按:wq保存并退出。然后使用命令chmod+xshow_user_logins.sh使这个脚本可执行。一切准备就绪后,我们就可以运行这个脚本了,可以看到得到的结果和我们在命令行手动输入命令的结果是一致的。$./show_user_loginsLoginssince2019-12-05=======================dorothy21dory13eel29jadep124jdoe27jimp42alex9shark17liangxu423test2waynek201通过了第一步,摸鱼的朋友浮出水面,受到重创:但是作为资深的摸鱼达人,我很清楚,用户每次登录,都会有记录,所以多登录几次,就会显得很勤快,所以用这种方法很容易躲避追捕。放心,我还有第二招,在我眼皮子底下可没那么容易钓到!2020精选阿里/腾讯等一线公司面试、简历、进阶、电子书公众号“良旭Linux”后台回复“数据”免费获取第二招:统计每个用户的登录时间last命令只能统计用户的登录记录,不能统计用户的登录时间。如果要统计每个用户的登录时间,那么还需要用到另外一个命令:ac命令。ac命令使用起来很简单,在ac后面跟着你要统计的用户即可,如下:$acalextotal31.61这个结果表示用户alex在这台电脑上的总登录时间是31.61小时(ac命令统计的结果的默认单位是小时)。我们可以编写命令来统计每个用户的登录时间,如上:$foruserin`ls/home`;做ac$用户|sed"s/总计/$用户\t/";donedorothy9.12dory1.67eel4.32…同理,先获取home目录下的所有用户名,然后将这些用户名作为参数传递给ac命令,就可以统计每个用户的登录时间了。我们从上面ac命令的结果可以看出,它的执行结果是total+duration。如果所有用户的结果都是这样,那我们就分不清谁是谁了。所以我们这里再次使用sed命令,将total替换为具体的用户名,以示区别。这里还有一个小瑕疵,就是每个用户名前都会有几个空格。虽然不影响结果,但看起来有点别扭。我们可以使用另一个sed命令来删除它。$用于`ls/home`中的用户;做ac$用户|sed"s/^\t//"|sed"s/总计/$用户\t/";doneorothy9.12dory1.67eel4.32...同样的,我们可以把上面的命令写成脚本,以后使用起来会更方便。我们这里使用的脚本名称是show_user_hours.sh,当然你可以自定义。#!/bin/bashecho-n“自从”who/var/log/wtmp|以来的在线时间|头-1|awk'{print$3}'echo"================================"对于`ls/home`中的用户做交流$用户|sed"s/^\t//"|sed"s/total/$user\t/"done脚本的执行结果如下,也和手动命令的结果一致:$./show_user_hoursonlinesince2019-12-05===============================dorothy70.34dory4.67eel17.05jadep186.04jdoe28.20jimp11.49alex11.61shark13.04liangxu3563.60test1.00waynek312.00通过第二招,渔夫无处遁形,受了100点伤害:写完这两个脚本,开心极了,就跑去找老板请功。看两人都排在第一位,估计升职加薪嫁给白富美的日子也不远了!看完我的剧本和结果,老板还是挂着朱曾无聊的笑容,默默给我看了朱曾炒掉前十名员工的视频,意味深长的看着我……完了……看完了真爱,走之前给我竖个大拇指好吗?您的“三通”是良旭继续创作的最大动力!关注原创公众号《良序Linux》,第一时间获取最新Linux干货!公众号后台回复【信息】【面试】【简历】获取精选一线大厂的面试、自我提升、简历等资料。关注我的博客:lxlinux.net
