#!/bin/sh
#
# Created 27 June 2003
#
# nologin will:
# - offer to set /etc/nologin
# - offer to evict user groups from system
# - offer to shutdown apache
#
NOLOGIN=0
APACHE=0
echo
echo -n "Set /etc/nologin [y/N]: "
read ANSWER
if [ "$ANSWER" = "Y" -o "$ANSWER" = "y" ]
then
echo -n "Login disabled message? : "
read ANSWER
echo $ANSWER > /etc/nologin
NOLOGIN=1
fi
echo -n "Evict a user group? [gid]: "
read GROUP
while [ "$GROUP" != "" ]
do
# create user list
w -h | awk '{print $1}' | sort | uniq >ldlist
while read NAME
do
GID=`grep ^$NAME: /etc/passwd | cut -f4 -d:`
if [ "$GID" = "$GROUP" -a $GROUP -gt 99 ]
then
echo " Evicting -> $NAME"
ps -A -o user -o pid | grep $NAME | \
awk '{print $2}' | xargs kill -15
fi
[ $GROUP -lt 100 ] && echo " GID must be > 99 "
done <ldlist
echo -n "Evict a user group? [gid]: "
read GROUP
done
echo -n "Stop apache/httpd? [y/N]: "
read ANSWER
if [ "$ANSWER" = "Y" -o "$ANSWER" = "y" ]
then
APACHE=1
# stop apache in its multitude of ways
{
/usr/local/apache/bin/apachectl stop
/etc/init.d/apache stop
/etc/init.d/httpd stop
} >/dev/null 2>&1
fi
echo
echo "When ready to let users back on, remember to:"
[ "$NOLOGIN" = "1" ] && echo "- Remove /etc/nologin"
[ "$NOLOGIN" = "1" ] && echo "- Run faillog -ra to reset any locked accounts"
[ "$APACHE" = "1" ] && echo "- Restart apache"
[ "$APACHE" = "0" -a "$NOLOGIN" = "0" ] && echo "- Seems Nothing Needs to Done"
rm -f ldlist >/dev/null 2>&1
echo