Fw:

Systems Administrator (jjohnston@u-r-online.com)
Thu, 29 May 1997 12:53:50 -0400

This is the script I use to prevent multi loggins. It requieres the
utilities pmwho and pmcomm.

----------
> From: System Administrator <root>
> To: jjohnston
> Subject:
> Date: Thursday, May 29, 1997 12:42 PM
>
> #!/bin/bash
>
> #use fqdn if necessary
> pmlist="portmaster1"
>
> #login names allowed to do multiple
> #pipe-separated list, for egrep
> exempt='name|name2'
>
> log="/var/log/booted"
>
> umask 077
>
> #make sure you have these commands
> if [ ! -x /usr/portmaster/pmwho -o ! -x /usr/portmaster/pmcom ]; then
> echo portmaster utilities not found
> exit 1
> fi
>
> # checking and cleaning up workspace
> if [ ! -d /tmp/.killer ]; then
> rm -r /tmp/.killer
> mkdir /tmp/.killer
> fi
>
> cd /tmp/.killer
>
> rm -f killme duplicates
>
> # make a separate pmwho file for each portmaster; tail removes two
header lines
> for each in $pmlist; do
> /usr/portmaster/pmwho $each | tail +3 > $each
> done
>
> #combine all, cut down to login name, and check for duplicates. greps
remove garbage
> cut -c6-16 portmaster* | grep -v '\- ' | grep -v 'PPP' | grep
-Ev "$exempt" \
> | sort | uniq -d > duplicates
>
> # get portmaster and port, put into a file. and kill the port
> for abuser in `cat duplicates`; do
> cat /root/multimsg | mail $abuser
> for each in $pmlist; do
> grep " $abuser " $each | tr ':' ' ' >> killme
> if [ -s killme ]; then
> echo ---`date`------------------------------------------- >> $log
> while read port user junk;do
> /usr/portmaster/pmcom -c $each "reset $port"
> echo " $user disconected from $each port $port" >> $log
> done < killme
> echo >> $log
> fi
> done
> done
> # final cleanup of /tmp/.killer
> rm -r /tmp/.killer
> mkdir /tmp/.killer