Belge

BASH: Linux’ta kabuk betiği kullanılarak tüm kullanıcı oturumları nasıl sonlandırılır?

Sistem yöneticisi görevi Linux’ta çeşitli şekillerde otomatikleştirilebilir.

İnsan çabalarını büyük ölçüde azaltır ve diğer üretken görevler için kullanılabilecek makul zamandan tasarruf sağlar.

Shell betiği normal işleri otomatikleştirmenin yöntemlerinden biridir.

Bir senaryoda, raporlama amacıyla bazı verileri doldurmak için haftalık bir iş veya EOD işi çalıştırmak istiyorsunuz.

Bunu yapmak için işe başlamadan önce sistemdeki uygulamaya halihazırda erişen tüm ssh oturumlarını sonlandırmanız gerekir.

 

Aşağıdaki kabuk betiği, kullanıcı oturumlarının tty değerini alarak tüm kullanıcıların aktif oturumlarını kaldıracak ve pkill komutunu kullanarak onları öldürecektir.

$ sudo vi /opt/script/kill-user-sessions.sh

#!/bin/bash
usession=$(w | awk '{if (NR!=1) {print $2 }}' | tail -n +2)
for i in $usession
do
pkill -9 -t $i
done

“Kill-user-sessions.sh” dosyasına yürütülebilir bir izin ayarlayın.

$ sudo chmod +x /opt/script/kill-user-sessions.sh

Son olarak, her gün sabah saat 3’te çalışan bu betiği otomatikleştirmek için bir cronjob ekleyin.

$ sudo crontab -e

0 3 * * * /bin/bash /opt/script/kill-user-sessions.sh

Yukarıdaki betiği ara sıra çalıştırmak istiyorsanız aşağıdaki formatı kullanın.

$ sudo for i in $(w | awk '{if (NR!=1) {print $2 }}' | tail -n +2); do pkill -9 -t $i; done

Sistemdeki birkaç kullanıcı nasıl hariç tutulur?

Sistemdeki kullanıcılardan herhangi birini hariç tutmak istiyorsanız aşağıdaki komut dosyasını kullanın.

Bu örnekte hariç tutma işleminde “root” ve “ansible” kullanıcılar referans olarak alınmıştır.

$ sudo vi /opt/script/kill-user-sessions-1.sh

#!/bin/bash
usession=$(w | grep -v "root|ansible" | awk '{if (NR!=1) {print $2 }}' | tail -n +2)
for i in $usession
do
pkill -9 -t $i
done

“Kil-user-sessions-1.sh” dosyasına yürütülebilir bir izin ayarlayın.

$ sudo chmod +x /opt/script/kill-user-sessions-1.sh

Son olarak, her gün sabah saat 3’te çalışan bu betiği otomatikleştirmek için bir cronjob ekleyin.

$ sudo crontab -e

0 3 * * * /bin/bash /opt/script/kill-user-sessions-1.sh

Yukarıdaki betiği ara sıra çalıştırmak istiyorsanız aşağıdaki formatı kullanın.

$ sudo for i in $(w | grep -v "root" | awk '{if (NR!=1) {print $2 }}' | tail -n +2); do pkill -9 -t $i; done

 

Yazının orijinalini buradan okuyabilirsiniz.