Menghapus User yang Expired Otomatis di Linux dengan Script

0
185

Apabila kita memiliki banyak user dalam linux server kita tentu kita akan kewalahan apabila terdapat user yang expired namun kita tidak mengetahuinya. Sedangkan untuk mencarinya harus mengecek satu per-satu user tersebut apakah sudah expired atau belum dengan tool chage. Meskipun info mengenai user yang ingin dilihat cukup lengkap, pasti akan kerepotan jika yang dicari cukup banyak.

Misal,

chage -l UserName

Agar tidak satu per-satu mengeceknya silahkan baca post : Mengetahui Informasi User Expired di Linux dengan Script Shell

Namun dengan cara tersebut kita hanya akan tahu list user dengan informasinya saja. Untuk mengapus user yang Expired secara otomatis bisa menggunakan script berikut :

Baca juga : Buat Banyak User dengan Script Sederhana di Linux

#
# Thank's to atreyu
# Created on 07-10-2012
#
# Rewrite by Arifta Adcha Fachrizal
#
#!/bin/bash

# current time in seconds
datenow=$(date +%s)


# loop over all users
for user in $(awk -F: '{print $1}' /etc/passwd); do

 # get date of expiration of users that have exp. date set
 expdate=$(chage -l $user|awk -F: '/Account expires/{print $2}')
 echo $expdate | grep -q never && continue

 echo -n "User \`$user' expired on $expdate "

 # convert exp. date to seconds
 expsec=$(date +%s --date="$expdate")

 # calculate diff b/t time now and exp. date
 diff=$( echo $datenow - $expsec)

 # if a negative number, hasn't expired yet
 echo $diff | grep -q ^\- && echo okay && continue
 printf ""

 # it will ask every user that will deleted, if you want to disable the feature you can add "#" in 3 lines
 read -r -p "Are you sure you want to delete this user? [y/N] " response
 if [[ $response =~ ^([yY][eE][sS]|[yY])$ ]]
 then

 # got this far, account must have expired
 echo deleting $user ...

 # deleting user
 userdel -r $user

 # if you want to disable the 'ask' feature you can add "#" in 3 lines
 else
 exit
 fi
done

Buat file *.sh misalkan del-expired-users.sh, beri permission dengan command :

[email protected]:~# chmod +x del-expired-users.sh

Jalankan dengan user root atau dengan sudo. Berikut contoh output :

[email protected]:~# ./del-expired-user.sh
User `test' expired on Okt 10, 2010 date: invalid date ‘ Okt 10, 2010’
Are you sure you want to delete this user? [y/N] y
deleting test ...
userdel: test mail spool (/var/mail/test) not found
userdel: test home directory (/home/test) not found
[email protected]:~#

Jika tidak ada user yang expired, maka tidak akan ada user yang akan terhapus. Namun harus tetap berhati-hati dalam mengeksekusi script tersebut.

Sumber : BelajarSys