! From: "Kent C. Brodie" ! uucp: {uunet!marque,csd4.milw.wisc.edu}!moocow!brodie ! special script for "uwmcsd4", have to go through a port selector (and then ! log in via standard Unix procedures). ! ! Also included is the ability to wait in the port selector queue. ! Be forwarned that uucico_callout.log can get pretty big depending on ! how many times you "wait" in the queue. (TONS of 'tick' messages). ! (C) 1989 Kent C. Brodie - Medical College of Wisconsin ! P0 is systemname , P1 is username, P2 is password. zero ! send a CR to get the selector's attention. Sleep a little bit ! due to large login text of selector. It sends "Which System?" ! when it's ready. getprtslct: count ifgtr noprtslct 6 break send \r sleep 2000 flush expect prtslctok ystem? timeout getprtslct 15000 noprtslct: logerr Sent cr, no "Which System?" from port selector failed ! Send the system name. We either get "OK" (connected), or we ! get "No ports available, would you like to wait?" (wait in queue) prtslctok: zero sendstr 0 send \r expect connected OK expect prtslctwait wait? timeout noconnect 10000 ! Usually we get "nn Your place in queue" messages. JUST in case we ! get a free port right away, check for 'Are you ready?' as well. prtslctwait: zero send Y\r expect prtslctque queue expect prtslctrdy ready? timeout prtwaitbad 70000 prtwaitbad: logerr Sent "Y" to wait in queue, did not get valid response. failed ! Here's where we wait in the queue. The port selector sends us a status ! message about once a minute. We either get "nn Your place in queue" ! or we get "System Available. Are you Ready?". ! If something goes wrong, we time out waiting for either response. ! The reason we don't sleep for 40-50 seconds is because as SOON as the ! port is ready, it informs us. If we wait too long, it drops us. ! This setup is laid out for a maximum of 20 "tries" which is ABOUT ! 20 minutes. Note: This constant retrying can make log files ! kind of big.... prtslctque: count ifgtr prtslcttry 20 expect prtslctque queue expect prtslctrdy ready? timeout noportwait 70000 prtslcttry: logerr Too many (20) wait/retries -- queue too busy. failed prtslctrdy: send Y\r expect connected OK timeout noconnect 20000 noportwait: logerr Timed out awaiting place in port queue failed noconnect: logerr Sent system name, no "OK" from selector failed ! standard Unix login stuff. Send cr, expect "ogin:", if no, send a break ! (which tells Unix to try the next bit rate) and try again. connected: send \r zero goto waitlogin sendbreak: count ifgtr nolgi 6 flush break waitlogin: expect gotlogin ogin: timeout sendbreak 5000 nolgi: logerr No login: prompt failed gotlogin: sendstr 1 send \r expect gotword word: timeout nopwd 10000 nopwd: logerr No password: prompt failed gotword: sendstr 2 send \r success