본문 바로가기
카테고리 없음

aix (유닉스) 라스트 로그인 사용자 한줄로 확인 하는 스크립트

by 감성김씨 2024. 2. 6.
728x90
반응형

OS에서 라스트 사용자만 한번에 볼 수 있는 스크립트를 만들었다

awk NR 을 사용해서 만들려고 했는데

테스트 서버에서 해당 명령어가 자꾸 실패해서

while 문으로 대충 만들었다. grep -w 이상하게 스크립트 먹히는 것 같은데..

결과값이 이상하게 나와서...

일단 답만 나오게 만들게 됐다.

 

cat  /etc/security/passwd   파일을 읽어온 값

 

 

root 옆에 lastupdate 파일이 오게 한줄로 나오게 만드는게 목적

은근 스크립트에서 여러줄을 특정 조건에 맞게 한줄로 만드는게 필요한데

나는 보통 파일 리스트를 만들고 변수에 저장 후  while문으로 만든다.

이렇게 만들면 굉장히 느리다는 단점이 있다. ㅠㅠ

나는 편한걸로만 만든다.

awk  지존이 되고 싶다. awk 만들면 정말 간단한 것을

 

root:
        password = KAeCf05MwbFms
        lastupdate = 1666224632

daemon:
        password = *

bin:
        password = R4Fw5I1roiewI
        lastupdate = 1658189746

sys:
        password = *

uucp:
        password = *

guest:
        password = *

nobody:
        password = *

lpd:
        password = *

secadm:
        password = LyNq/fCZjbeWg
        lastupdate = 1688534007

gohome01:
        password = BPRqeXxMC4ilA
        lastupdate = 1641352784

t0823:
        password = cedwj4m8Ap.lQ
        lastupdate = 1629699039
        flags = NOCHECK

sim001:
        password = YnPwo0SPf.Vp.
        lastupdate = 1631070664

t090999:
        password = unrmd7s8wVZts
        lastupdate = 1631159131

t090998:
        password = 5duZH3Zws4ZUg
        lastupdate = 1658187117

kbusr000:
        password = q8dgcLHTZMIYY
        lastupdate = 1658986998

kbusr001:
        password = is1UPuv0BGW0E
        lastupdate = 1658986565

kbusr002:
        password = r7RZMXNBodJ8k
        lastupdate = 1632032390

kbusr003:
        password = LvAlnPNF5AZcg
        lastupdate = 1632032429

kbusr904:
        password = oiSOP5gI5o8.g
        lastupdate = 1632371148

kbusr902:
        password = ll0vElh18We2s
        lastupdate = 1632371213

kbusr901:
        password = lKospWdsjF95.
        lastupdate = 1632371288

kbusr903:
        password = 0huTkXAL0zDRs
        lastupdate = 1632371309

kbusr906:
        password = aT/a3NFSusckg
        lastupdate = 1634779572

a1234567:
        password = c7RF9bJ3PDAY2
        lastupdate = 1658191339
        flags = NOCHECK

newdat:
        password = DGtQzVeyEPyb6
        lastupdate = 1658469467
        flags = NOCHECK

esaadmin:
        password = *
        lastupdate = 1656465949

vvolow:
        password = BQPCPLuSqH61U
        lastupdate = 1658469759
        flags = NOCHECK

vvv456:
        password = 1GNqv.3oJe3Os
        lastupdate = 1656478248
        flags = ADMCHG

nuucp:
        password = *
        lastupdate = 1656485899

ted:
        password = 448r7UnSGvXpY
        lastupdate = 1658469756
        flags = NOCHECK

bubu:
        password = s.tnXABiY.Ut2
        lastupdate = 1663547153
        flags = NOCHECK

yyyy:
        password = EewalywXJQj.6
        lastupdate = 1661901870
        flags = NOCHECK

a2148:
        password = 9UXp1mDK1tMtE
        lastupdate = 1663547150
        flags = NOCHECK

kube0101:
        password = xL76qsUZCskxo
        lastupdate = 1658987095
        flags = NOCHECK

abcrt:
        password = O0l69nMxbDGIs
        lastupdate = 1663645253
        flags = NOCHECK

atto:
        password = Z42lqCRXFrhHE
        lastupdate = 1662359147
        flags = NOCHECK

h2144:
        password = RcGeBvtV62XJA
        lastupdate = 1662508522
        flags = NOCHECK

test919:
        password = lErIh2XN1.QmU
        lastupdate = 1663653793
        flags = NOCHECK

test818:
        password = IVBzAg/Nyh7Rk
        lastupdate = 1663653799
        flags = NOCHECK

imtest:
        password = kLas2BnO6Mycc
        lastupdate = 1664520913
        flags = NOCHECK

test2:
        password = H4cL7eYD0x98U
        lastupdate = 1679279186
        flags = NOCHECK

test3:
        password = pEZOx4blb8DKE
        lastupdate = 1679279830
        flags = NOCHECK

test:
        password = p2BkdeLrsSMmk
        lastupdate = 1687234067

g1231005:
        password = FEBbLKkj3V6fY
        lastupdate = 1696462693
        flags = NOCHECK

g2211005:
        password = 9bN2tOap4DwtI
        lastupdate = 1696490444
        flags = NOCHECK

g7777777:
        password = szcnlf68opOwc
        lastupdate = 1696975735
        flags = NOCHECK

test123:
        password = 12Ozk6Yu7QJWo
        lastupdate = 1706056883

 

 

테스트 서버에 있는 패스워드 값이고 이 내용을 가지고 만들겠다.

 

 

 

#패스워드 파일에서 라이스업데이트 내용을 while 문 $users 에 저장한다.

cat -n /etc/security/passwd | egrep -vw "daemon:|bin:|sys:|adm:|uucp:|nobody:|lpd:|guest:" | \ 
while read users
do
    USER=$(echo "$users" | grep ":" | sed 's/://g'|awk '{print $2}') 

     #계정 정보        
    USERNUM=$(echo "$users" | grep ":"| awk '{print $1}') 

    #cat -n 옵션을 이용한 계정 라인 확인                     
    LASTNUM=$(echo $USERNUM 2|awk '{sum = $1 + $2; print sum}') 

     #계정라인에 +2 를 더해 lastupdate 파일 라인을 확인

# LASTUPDATE=$(echo $users|grep -w ${LASTNUM}| awk '{print $2}') #이게 왜 제대로 안되는지 모르겠음

 

 

# if 문으로 계정 라인에 +2 를 해서 lastupdate 가 있는지 확인
    if [ `echo $usres |grep $LASTNUM |grep lastupdate|wc -l` -eq 1 ];then

    LASTUPDATE=`echo lastupdate` 

    # lastupdate 가 있으면 변수에 저장 // 이렇게 까지 만들어야 되나?? 위에 주석처리 LASTUPDATE  이걸로 하면 될 것 같은데... 흠...
    fi
    echo ${USER} $LASTUPDATE|grep -v ^last   

   #이상한 가비지 값이 나와서 빼줌
done

 

결과값

 

root@AIX:/tmp#cat -n /etc/security/passwd | egrep -vw "daemon:|bin:|sys:|adm:|uucp:|nobody:|lpd:|guest:" | \
> while read users
> do
>     USER=$(echo "$users" | grep ":" | sed 's/://g'|awk '{print $2}')
>     USERNUM=$(echo "$users" | grep ":"| awk '{print $1}')
>     LASTNUM=$(echo $USERNUM 2|awk '{sum = $1 + $2; print sum}')
>     if [ `echo $usres |grep $LASTNUM |grep lastupdate|wc -l` -eq 1 ];then
>     LASTUPDATE=`echo lastupdate`
>     fi
>     echo ${USER} $LASTUPDATE|grep -v ^last
> done


root lastupdate
secadm lastupdate
gohome01 lastupdate
t0823 lastupdate
sim001 lastupdate
t090999 lastupdate
t090998 lastupdate
kbusr000 lastupdate
kbusr001 lastupdate
kbusr002 lastupdate
kbusr003 lastupdate
kbusr904 lastupdate
kbusr902 lastupdate
kbusr901 lastupdate
kbusr903 lastupdate
kbusr906 lastupdate
a1234567 lastupdate
newdat lastupdate
esaadmin lastupdate
vvolow lastupdate
vvv456 lastupdate
nuucp lastupdate
ted lastupdate
bubu lastupdate
yyyy lastupdate
a2148 lastupdate
kube0101 lastupdate
abcrt lastupdate
atto lastupdate
h2144 lastupdate
test919 lastupdate
test818 lastupdate
imtest lastupdate
test2 lastupdate
test3 lastupdate
test lastupdate
g1231005 lastupdate
g2211005 lastupdate
g7777777 lastupdate
test123 lastupdate

 

 

 

 

 

 

728x90
반응형