注意:系統維護完畢後,記得把/etc/nologin文件刪除,否則普通用戶無法登入系統
#!/bin/bash
#
#
#===================================================================
#
# author: 9528
# mail: [email protected]
# date: 2019-7-24
#
#-------------------------------------------------------------------
#
# 簡述:
# 腳本實現提示普通用戶系統即將開始維護作業,禁止用戶新登入,已
# 登入的普通用戶強制下線。
#
#===================================================================
#
#引入系統函數,調用函數實現執行成功或失敗時給信息着色的功能
#
. /etc/init.d/functions
#
#創建/etc/nologin文件,此文件存在時,普通用戶將不能登入,普通用戶登陸時
#會顯示文件裏的內容
#
#注意:系統維護完成後要記得把此文件刪除,否則會導致普通用戶不能登入系統
#
echo "The system is about to be maintained. Do not log in!" > /etc/nologin
#
#給系統上的全部已登入的用戶發提示信息
#
wall -n << EOF
===========================================================================
Peleae note:
After 10 minutes, the system is about to be maintained.
Please log off after you have saved your data, mandatory
logging off after 10 minutes!
===========================================================================
EOF
#
#10分鐘倒計時
#
sleep 10m
#
#查看此時有沒有非root用戶登入系統
#
who | grep -v "^root\>" > /dev/null
#
#如果有非root用戶登入系統,則強制下線這些用戶
#
#整理已登入的普通用戶,去除重複項
#爲了防止誤下線root用戶,加強判斷,只有普通用戶才強制下線
#
if [ $? -eq 0 ];then
who | grep -v "^root\>" | awk '{print $1}' > users1
sort -u users1 > users2
while read line; do
if [ $line != 'root' ];then
pkill -kill -u $line
if [ $? -eq 0 ];then
action "pkill $line:" /bin/true
else
action "pkill $line:" /bin/false
fi
fi
done < users2
rm -f users1 users2
fi
#
#作業完成
#提示用戶可以再次執行who命令覈實是否普通用戶都已下線
#提示用戶系統維護完畢後,要記得刪除/etc/nologin文件
#
echo -e "\n"
echo "-------------------------------finish!----------------------------------------"
echo "Please confirm again by execute the 'who' command."
echo -e "Remember to delete the /etc/nologin file when system maintenance is complete.\n"
執行結果演示
[root@localhost ~/test]$bash pkill.sh
Remote broadcast message (Thu Aug 1 12:55:26 2019):
===========================================================================
pleae note:
After 10 minutes, the system is about to be maintained.
Please log off after you have saved your data, mandatory
logging off after 10 minutes!
===========================================================================
pkill sc: [ OK ]
pkill tom: [ OK ]
-------------------------------finish!----------------------------------------
Please confirm again by execute the 'who' command.
Remember to delete the /etc/nologin file when system maintenance is complete.
[root@localhost ~/test]$