#!/bin/bash

# ulogin  - A script for autologin of a selected user (and more)
#-----------------------------------------------------------------
# 2008.04.06

user=$( cat /tmp/newuser 2>/dev/null )

rm -f /tmp/newuser
rm -f /tmp/xlogout

if [ -n "${user}" ]; then
    login -f ${user}
else
    # offer choice of user
    ulist="$( cat /etc/passwd | grep ':/home/.*sh$' )"
    echo -e "\nLogin a user or quit:"
    echo "   0 : root"
    echo "   1 : REBOOT"
    echo "   2 : HALT"

    i=2
    for entry in ${ulist}; do
        i=$(( ${i} + 1 ))
        user="$( echo ${entry} | cut -d':' -f1 )"
        users[${i}]=${user}
        printf "%4d : %s\n" ${i} ${user}
    done
    while true; do
        read -p "Enter a number from 0 to ${i} : " n
        if [ "${n}" = 0 ]; then
            login -f root
        elif [ "${n}" = 1 ]; then
            exec reboot
        elif [ "${n}" = 2 ]; then
            exec halt
        elif [ -n "$( echo "${n}" | grep "^[0-9]\+$" )" ] && \
                [ -n "${users[${n}]}" ]; then
            login -f ${users[${n}]}
        else
            echo "  *** Invalid choice ..."
            continue
        fi
        break
    done
fi

if grep "r" /tmp/xlogout &>/dev/null; then
    reboot
elif grep "h" /tmp/xlogout &>/dev/null; then
    halt
fi

# This file is only needed for shutting down
rm -f /tmp/checkse

# End