Hapus pengguna yang belum masuk selama x hari


1

dapatkan kode sederhana di bawah ini

USERS=`cat /etc/passwd`
for USER in $USERS
do
   echo "---------- $USER --------------"
   last -n 4 $USER
done

Saya ingin menghapus semua pengguna yang belum masuk selama lebih dari 60 hari.

Tetapi masalah dengan membaca /etc/passwdadalah bahwa saya mendapatkan semua pengguna sistem juga.

Gagasan bagaimana mendapatkan akun yang baru saja dibuat pengguna dan menghapusnya adalah mereka belum masuk selama 90 hari.

Tepuk tangan


2
Jika Anda khawatir tentang akun aktif, pertahankan basis data pengguna Anda sendiri yang memenuhi syarat untuk penghapusan otomatis alih-alih mengandalkan /etc/passwd.
chepner

Periksa chage. Dengan chage -l userAnda dapat info dan dengan chage --somethingmembuat pengguna menonaktifkan setelah XX hari.
fedorqui

Jawaban:


3

Periksa apakah UID berada di antara UID_MINdan UID_MAX(didefinisikan dalam /etc/login.defs):

UID_MIN=$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)
UID_MAX=$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)

USERS=$(awk -F: -v min=$UID_MIN -v max=$UID_MAX '{
  if ($3 >= min && $3 <= max) print $1
}' /etc/passwd)

now=$(date +%s)

for user in $USERS; do
  last_login=$(date -d "$(last -FRn 1 $user |
    egrep -v "wtmp begins|still logged in" |
    awk '{print $10 " " $11 " " $13 " " $12}')" +%s)
  [ $(( (now - last_login) / 86400 )) -ge 90 ] && echo $user
done

Semua ini apakah itu daftar pengguna? Dan bagi saya daftar pengguna root berulang kali. Idealnya saya ingin skrip shell yang dapat saya tambahkan ke cron yang memeriksa apakah pengguna telah login dalam x hari ... jika tidak menghapusnya.
bsmoo

Ya, semua yang dilakukan adalah daftar pengguna. Saya tidak merekomendasikan penghapusan akun pengguna secara otomatis. Alasan mengapa daftar rootberulang-ulang adalah, karena bagian yang saya salin / tempel dari skrip awal Anda bergema $USER(variabel lingkungan dengan nama pengguna pengguna yang saat ini masuk) alih-alih variabel loop $user. Nama variabel peka huruf besar-kecil. Saya memperbarui kode sampel saya sehingga hanya mencetak pengguna yang belum masuk selama 90 hari atau lebih.
Ansgar Wiechers

@ ubuntu101010101 Jika Anda benar-benar ingin menghapusnya secara otomatis, Anda cukup mengubah echoperintah di bagian akhir menjadi sebuah deluser --remove-homeperintah.

0

Periksa direktori home pengguna (kolom 6) dan abaikan yang kosong.


1
yang tidak akan berfungsi karena pengguna layanan menyukai namedatau lpmemiliki entri di sana dan Anda tidak ingin menghapusnya.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.