로그인한 사용자 목록(이름, 단말기, 로그인 시간)

로그인한 사용자 목록(이름, 단말기, 로그인 시간)

현재 터미널에 로그인한 사용자 목록을 인쇄하려고 합니다. 다음과 같아야 합니다.

여기에 이미지 설명을 입력하세요.

지금까지 나는 이것만 얻었습니다:

여기에 이미지 설명을 입력하세요.

터미널과 로그인 시간이 누락되었습니다. 어떻게 표시할 수 있나요? 이것이 내가 지금까지 얻은 것입니다:

#!/bin/bash
NOWDATE=$(date +"%Y-%m-%d")
NOWTIME=$(date +"%T")
USERS=$(who | cut -d " " -f1)
TERMINAL=0
LOGIN=0

for u in $USERS
do
    echo "$NOWDATE""_""$NOWTIME User: " $u
done

답변1

출력 구문 분석w어쩌면 그것보다 나을지도 몰라who. 로그인 시간을 보여주는 대표적인 데이터는 다음과 같습니다.

$ who
tom      pts/1        2015-11-15 06:39 (michener:S.0)
$ w
 06:40:10 up  1:04,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
tom      pts/1    michener:S.0     06:39    2.00s  0.03s  0.00s w

이것들은 것보다 낫다finger. 이는 강의실 연습이므로 데이터 구문 분석 작업은 OP에 맡겨집니다. 팁으로 awk는 필드를 한 줄 이상으로 인쇄할 수 있습니다.

  • wBEGIN일반적으로 awk 스크립트에 행 번호나 상태를 설정하는 섹션을 포함시켜 출력을 처리할 수 있습니다 .
  • 그런 다음 각 줄의 기본 동작(패턴 없이 중괄호만 사용)은 줄 번호를 증가시키는 것입니다.
  • 줄 번호를 사용하고 첫 번째 줄을 구체적으로 처리합니다(이 경우 건너뛰기: OP).가능한타이틀에 대한 사용자 수를 보고해야 하지만 OP의 예에서는 사용되지 않음)가 있는 행을 건너뜁니다 USER.
  • 그 후 OP의 필요에 따라 각 라인을 인쇄할 수 있습니다. awk더 이상 데이터가 없으면 종료됩니다. 이 작업을 수행하는 데 사용자 수를 알 필요가 없습니다.

OP에게 통보된 경우사용 who에는 추가 정보를 나열하는 옵션이 있습니다. 예를 들면 다음과 같습니다.

$ who -l -u
LOGIN    tty5         2015-11-15 05:36              3670 id=5
LOGIN    tty6         2015-11-15 05:36              3671 id=6
LOGIN    tty4         2015-11-15 05:36              3669 id=4
LOGIN    tty3         2015-11-15 05:36              3668 id=3
LOGIN    tty2         2015-11-15 05:36              3667 id=2
LOGIN    tty1         2015-11-15 05:36              3666 id=1
tom      pts/1        2015-11-15 06:39 00:06        5780 (michener:S.0)
tom      pts/2        2015-11-15 06:52   .          6078 (michener:S.1)

단말기 이름과 로그인 횟수가 다시 표시됩니다.

답변2

Bash 스크립트가 필요하지 않습니다. 손가락 명령을 사용할 수 있습니다. 로그인한 모든 사용자에 대한 완전한 정보를 제공합니다.

터미널을 열고 손가락을 입력하기만 하면 됩니다. 당신은 당신이 필요로하는 것을 얻을 것입니다. 손가락으로 무엇을 할 수 있는지 더 알고 싶다면여기를 읽어보세요

관련 정보