shell腳本實現:系統維護期間 禁止普通用戶登入 並強制普通用戶下線

注意:系統維護完畢後,記得把/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]$

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章