#!/bin/ksh -p

# Variables
timeout="TIME"
file="FILE"
type="TYPE"
host="HOST"
port="PORT"
login="LOGIN"
logout="LOGOUT"
pass="PASS"
cmd="CMD"
ltype=""
case "${type}" in
    brocade)
        ps1=':admin>'
        ps2=':admin>'
	ltype="login:"
	;;
    t3)
	ps1='<1>$'
	ps2='<2>$'
	ltype="Login:"
        ;;
    sc)
	ps1=':SC> $'
	ps2=':SC> $'
        ;;
esac

# Establish connection
echo open ${host} ${port}
sleep 1

# If Brocade or T3, wait for login prompt
if [ "${type}" = "brocade" -o "${type}" = "t3" ]
then
    tout=${timeout}
    while [ "${tout}" -gt 0 ]
    do
	if tail -1 "${file}" 2>/dev/null | egrep -s -e "${ltype}"
	then
	    echo "${login}"
	    sleep 1
	    tout=-1
	    continue
	elif tail -1 "${file}" 2>/dev/null | egrep -s -e "system is engaged"
	then
	    # Only one telnet session on a switch, if switch is engaged,
	    # exit
	    exit 1
	else
	    sleep 1
	    ((tout = tout - 1))
	fi
    done
fi

# Look for password or command prompt
tout=${timeout}
while [ "${tout}" -gt 0 ]
do
    if tail -1 "${file}" 2>/dev/null | egrep -s -e "Password:"
    then
	echo "${pass}"
	sleep 1
	tout=-1
	continue
    elif tail -1 "${file}" 2>/dev/null | egrep -i -s -e "${ps1}"
    then
        tout=-1
	continue
    else
	sleep 1
	((tout = tout - 1))
    fi
done

# Print the command, extra sleep to make sure command captured
sleep 1
echo "${cmd}"
sleep 1

# Wait for command completion
tout=${timeout}
while [ "${tout}" -gt 0 ]
do
    # Done if PS2 or failed login (login or password prompt)
    if tail -1 "${file}" 2>/dev/null | egrep -i -s -e "(${ps2}|Password:)"
    then
        echo "${logout}"
	tout=-1
	continue
    else
        sleep 1
	((tout = tout - 1))
    fi
done
echo "" >>${file}
exit 0
