Re: awk and uniq
merrittr wrote:
> I am trying to get the script below to mail out 1 email to each person
> logged in however:
>
> finger gives
> bash-3.1$ finger
> Login Name Tty Idle Login Time Office
> Office Phone
> rwm132 Robert Wesley Merritt pts/0 May 28 18:51
> (reif.usask.ca)
> rwm132 Robert Wesley Merritt *pts/1 51d May 24 18:53
> (reif.usask.ca)
> rwm132 Robert Wesley Merritt *pts/5 51d May 25 08:28
> (reif.usask.ca)
> rwm132 Robert Wesley Merritt *pts/2 51d May 25 11:00
> (reif.usask.ca)
> so I only want to send onee email, any ideas how i do that
>
>
>
>
> #!/bin/sh
>
> allnsid=""
> finger | awk '{print $1} {print $2} {print $4}'|while read nsid
> do
> read fn
> read ln
> allnsid="$allnsid $nsid"
> echo "hello $fn $ln" >> $nsid.txt
> echo "please" >> $nsid.txt
> echo "lof off " >> $nsid.txt
> echo "the" >> $nsid.txt
> echo "machine" >> $nsid.txt
> #mail -s logoff $nsid@mail.usask.ca < $nsid.txt
>
> case $allnsid in
> *$nsid*)
> echo "mailing to $nsid $fn $ln"
> ;;
> esac
>
> echo $allnsid
> done
>
Maybe you can use
wall
that will send a broadcast message to all terminals (shells).
Maybe you have
getent passwd
this works better than finger.
#!/bin/sh
getent passwd |
awk -F: 's[$1]++==0 && s[$3]++==0 {print $1":"$5}'
while read line
do
IFS=":"
set $line
echo "
Hello $2
please log off." |
mail -s logoff $1@mail.usask.ca
done
The awk line eliminates duplicates of fields 1 (ID) and 3 (UID).
--
Michael Tosch @ hp : com
|