#!/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 -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 -s -e "(${ps2}|Password:)" then echo "${logout}" tout=-1 continue else sleep 1 ((tout = tout - 1)) fi done echo "" >>${file} exit 0