나는 솔라리스에서 리눅스의 lastlog에 해당하는 명령이 필요하고 사용자가 솔라리스 서버에 마지막으로 로그인한 날짜와 시간을 찾기 위한 스크립트를 작성해야 합니다. Linux는 lastlog 명령을 사용하여 쉽게 얻을 수 있습니다.
마지막 -1 USERID를 시도했는데, 사용자가 서버에 로그인하지 않은 경우 출력이 없습니다. 작업은 90일 이상 서버에 로그인하지 않은 사용자를 찾는 것입니다. 스크립트는 다음과 같이 출력해야 합니다.
ServerName USERID 10-Jun-2018 3Days
답변1
lastlog
운영 체제에서 제공하는 Linux 명령과 직접적으로 동등한 것은 없습니다 .
Linux 로그인 빌링 시스템에는 각 사용자 계정의 마지막 로그인 시간을 기록하고 해당 계정의 사용자 ID로 인덱싱되는 테이블이 있습니다. NetBSD, FreeBSD 및 OpenBSD 로그인 계정 시스템에는 동등한 테이블(비록 구조와 이름은 다르지만)과 (NetBSD 및 FreeBSD 시스템의 경우) lastlogin
1990년대 중반으로 거슬러 올라가는 명령이 있습니다. 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
프로그램(Oracle에서 해당 소프트웨어가 사라질 때까지)이 있었습니다. 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/sum라는 파일을 찾을 수 있습니다.로그인 로그. 이 파일은 각 사용자의 마지막 로그인 날짜를 기록합니다.마지막 로그인 스크립트.
이 파일을 기반으로 하고 awk 등을 사용하면 귀하의 요구 사항을 쉽게 충족할 수 있습니다.