[alt.sources] ecu - SCO XENIX V/{2,3}86 Extended CU part 47/47

wht@tridom.uucp (Warren Tucker) (10/12/89)

---- Cut Here and unpack ----
#!/bin/sh
# this is part 47 of a multipart archive
# do not concatenate these parts, unpack them in order with /bin/sh
# file models/unixlogin.ep continued
#
CurArch=47
if test ! -r s2_seq_.tmp
then echo "Please unpack part 1 first!"
     exit 1; fi
( read Scheck
  if test "$Scheck" != $CurArch
  then echo "Please unpack part $Scheck next!"
       exit 1;
  else exit 0; fi
) < s2_seq_.tmp || exit 1
echo "x - Continuing file models/unixlogin.ep"
sed 's/^X//' << 'SHAR_EOF' >> models/unixlogin.ep
X#:07-09-1989-23:50-wht-add breaks
X#:06-28-1989-19:36-wht-use named variables
X#:06-25-1989-13:56-wht-new do command syntax
X#:06-25-1989-12:33-wht-new if/while syntax
X#:06-23-1989-19:46-wht-improved hayes dialer reduces need to report dial fail
X#:06-19-1989-22:50-wht-use while and if statements
X#:06-14-1989-15:58-wht-add login capability when already connected
X#:06-11-1989-23:37-wht-creation
X
X	mkvar $i_csave,$i_ltimeout,$i_retries
X
X	$i_csave = %colors
X	$i_ltimeout = 30 # 3 seconds wait for first login prompt
X	$i_retries=3
X
X	color red;    echo -n '\nauto-logon to '
X	color yellow; echo -n %argv(1)
X	color red;    echo    ' on '+%date+' at '+%time+'\n'
X
X	ifi %argc < 5	# not enough args
X	{
X		color red
X		echo %argv(0)+' needs 5 arguments (got '+%itos(%argc)+')'
X		goto SORRY
X	}
X	mkvar $i_breaks
X	ifi %argc > 5 $i_breaks = %stoi(%argv(5))
X
X	ifi %conn == 0 goto DIAL
X
X	ifs %rname == %argv(1)
X	{
X		color brown;  echo -n 'already connected to '
X		color yellow; echo    %rname
X		send ''
X		goto SEND_BREAKS
X	}
X
XHANGUP
X	ifi %conn <> 0 echo 'hanging up on '+%rname; hangup
X
XDIAL
X	color green
X	dial %argv(1); set $i1=$i0 #save dial result in $i1
X	ifi $i1 == 2 color red; echo 'interrupted'; goto SORRY
X	ifi $i1 != 0 goto SORRY
X
X# send breaks?
XSEND_BREAKS
X	ifi $i_breaks > 0
X	{
X		whilei $i_breaks > 0
X		{
X			color blue; echo 'sending break to remote'
X			nap 20
X			lbreak
X			$i_breaks = $i_breaks - 1
X		}
X		flush
X		lookfor '\n' 50
X	}
X
X# get login prompt from remote UNIX system: "login: "
XGET_LOGIN_PROMPT
X	set $i_retries = 6		# retry count
X
XGET_LOGIN_PROMPT_RETRY		# retry get login prompt
X	whilei $i_retries > 0
X	{
X		color cyan
X		lookfor -e 'login: ' $i_ltimeout
X		ifi $i0 == 1 break			# go send username
X		$i_ltimeout = 50			# later login waits 5 secs
X		set $i_retries = $i_retries - 1			# read and decrement retry
X		ifi $i_retries == 0 goto SORRY	# but not if retry exhausted
X		color yellow
X		echo 'sending prompt stimulus'
X		color green
X		send '' # kick off another login prompt
X	}
X
X# give username to remote
XSEND_USERNAME
X	nap 3 # system not always ready when it says
X	send %argv(2)
X
X# get password prompt: "Password:" 
XGET_PASSWORD_PROMPT
X	lookfor -e 'Password:' 50
X	ifi $i0 != 1		# did not find 'Password: '
X	{
X		send ''
X		gotob GET_LOGIN_PROMPT_RETRY
X	}
X
X# send the password
X	nap 3 # system not always ready when it says
X	send %argv(3)
X
X# get term type prompt "TERM = (ansi) "
X# also handle incorect login retry and 'Sorry' hangup indication
XGET_TERMTYPE_PROMPT
X	ifs %argv(4) == ''	# if no term type, don't wait for prompt
X	{
X		$i0 = 0			# return good status
X		goto SETCOLOR_AND_RETURN_STATUS
X	}
X	lgets -re $s0 100 50 ') '
X	ifi %instr($s0,'Sorry') > 0 hangup;goto SORRY
X	ifi %instr($s0,'incorrect') > 0		# exhausted retry?
X	{
X		set $i_retries=$i_retries-1
X		ifi $i_retries > 0 goto SEND_USERNAME
X		goto SORRY
X	}
X# send terminal type
X	ifi %instr($s0,'TERM') < 0
X		lookfor -e ') ' 30
X	send %argv(4)
X	lookfor -e '\n' 50
X	set $i0=0
X	goto SETCOLOR_AND_RETURN_STATUS
X
X# procedure failed
XSORRY
X	set $i0=1
X
XSETCOLOR_AND_RETURN_STATUS
X	icolor $i_csave
X	ifi $i0 == 0 ifi %conn !=0 prompt %rname+' >'
X	return $i0
X
X# vi:set tabstop=4 shiftwidth=4:
SHAR_EOF
echo "File models/unixlogin.ep is complete"
chmod 0644 models/unixlogin.ep || echo "restore of models/unixlogin.ep fails"
rm -f s2_seq_.tmp
echo "You have unpacked the last part"
exit 0
-- 
-------------------------------------------------------------------
Warren Tucker, Tridom Corporation       ...!gatech!emory!tridom!wht 
Ker-au'-lo-phon.  An 8-foot partial flue-stop, having metal pipes
surmounted by adjustable rings, and with a hole bored near the top
of each pipe, producing a soft and "reedy" tone.