我需要在solaris中与linux的lastlog等效的命令,需要编写一个脚本来查找solaris服务器中用户上次登录的日期和时间。 Linux 使用lastlog 命令很容易获取。
我尝试了最后 -1 USERID ,如果任何用户未登录该服务器,则没有 ouptut ,任务是找到未登录服务器超过 90 天的用户,脚本应给出输出为
ServerName USERID 10-Jun-2018 3Days
答案1
没有lastlog
与操作系统提供的 Linux 命令直接等效的命令。
在Linux登录计费系统中,有一个表记录每个用户帐户的最后登录时间,并通过该帐户的用户ID进行索引。在 NetBSD、FreeBSD 和 OpenBSD 登录记账系统中,有一个等效的表(尽管结构和名称不同),并且(在 NetBSD 和 FreeBSD 系统中)有一个可以lastlogin
追溯到 20 世纪 90 年代中期的命令。在 Linux 和 BSD 世界中,该表由写入登录日志表和当前活动登录表(登录数据库中的另外两个表)的相同程序更新。
Solaris 有两张表:一张等效,一张不完全等效。
last
其他人指向的命令并不是特别有用,因为它不能从任何一个命令操作。它的运作关闭不同的登录记账数据库中的表、登录事件日志表;正如您所看到的,如果帐户从未登录过,则该表中将没有任何内容可以处理。而相反,对于每个用户帐户,最后登录时间表都有一条记录(在 BSD 上是一个空的隐式记录,在 Linux 上是一个显式的空记录)。
不太等效的 Solaris 表是/var/adm/acct/sum/loginlog
。当登录发生时,程序不会直接填充该数据login
,并且没有直接等效的程序来报告它。
它与lastlogin
命令相关联;然而,这与前面提到的同名命令有很大不同。在 Solaris 上,它是写入此表的工具,而不是报告其内容的工具。 (这也是lastlogin
AIX 上的用途。)该runacct
工具每天运行,调用lastlogin
命令来填充此表。报告是通过prtacct
命令完成的。
直接等效的 Solaris 表是/var/adm/lastlog
,Oracle doco 中未提及该表。没有提供用于读取它的程序。然而,有一个由理查德·汉密尔顿(Richard Hamilton)编写的第三方lastlog
程序(直到该软件在甲骨文消失之前)可用。您可能想说服 OpenIndiana/Illumos 人员合并这样的命令。 OmniOS 工程师 Dan McDonald 于 2016 年 1 月才开始接触这些东西。
进一步阅读
答案2
Solaris 中的命令是last
。
这将显示用户上次tim
登录的时间。
bash-[510]$ last -1 tim
tim pts/1 192.168.0.106 Wed Jun 13 18:16 still logged in
如果该用户自数据库轮换后尚未登录,您将不会获得任何输出。
bash-[511]$ last -1 tom
wtmp begins Fri Mar 27 19:57
答案3
Oracle Solaris 还提供了一个很好的工具,称为
帐户
您可以在以下链接中找到说明系统会计。
在目录中/var/adm/acct/总和你会发现一个名为登录日志。该文件记录每个用户的最后登录日期,由上次登录脚本。
基于这个文件并使用 awk 等,应该很容易满足您的需求。