home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume26 / con / part01 next >
Text File  |  1993-06-28  |  46KB  |  1,332 lines

  1. Newsgroups: comp.sources.unix
  2. From: navarra@casbah.acns.nwu.edu (John Navarra)
  3. Subject: v26i276: con - user-friendly network connection utility, Part01/01
  4. Sender: unix-sources-moderator@gw.home.vix.com
  5. Approved: vixie@gw.home.vix.com
  6.  
  7. Submitted-By: navarra@casbah.acns.nwu.edu (John Navarra)
  8. Posting-Number: Volume 26, Issue 276
  9. Archive-Name: con/part01
  10.  
  11. Con is a perl script which facilitates con(tacting) different hosts
  12. using a variety of options. It was written so its users did not have
  13. to make a mess of functions, aliases, or other strange contortions
  14. so they could get at their favorite computers. Instead, con uses a 
  15. file called .hosts (or whatever you want to call it), and a few 
  16. environmental variables to determine what exactly you want to do 
  17. with minimal typing. The basic idea is that you have already provided
  18. the information beforehand and are now just using it again. For instance,
  19. the typical entry in .hosts looks like this:
  20.  
  21. 129.105.113.53 <TAB>  casbah.acns.nwu.edu sunny  <TAB> navarra 
  22.  
  23. The format is exactly like /etc/hosts except for the possible third
  24. field. 
  25.  
  26. Now, con makes use of this information in the following way. Say you 
  27. want to rsh to casbah.
  28. with con:
  29.  
  30.     $ con -r cas
  31.         $ [alternatively] rsh casbah.acns.nwu.edu -l navarra 
  32.  
  33.  
  34. Now, say you had a .rhosts entry for yourself on casbah and you wanted 
  35. to use rsh to look at a file on a remote machine. With con, this becomes,
  36.  
  37.     $ con -r cas cat filename
  38.           $ [alternatively] rsh casbah.acns.nwu.edu -l navarra cat filename
  39.  
  40. Not good enough you say! (surely you jest). You tell me your shell has 
  41. hostname completion so I can easily expand casbah. Then, con is not saving
  42. me all that much typing. Ok, I see your point. Therefore, con also uses
  43. the enviromental variable DEFAULT_OPT=/usr/ucb/rsh (that is what it is
  44. recommended to be anyway). Now, the command to check your file is now
  45. down to this:
  46.  
  47.     $ con cas cat filename
  48.  
  49. What? Still not good enough! (my you are hard to please! ;-) 
  50. Well, what if you could make a link to con, (call it say, casbah) and
  51. have con recognize what you want to do. Ok, now the command becomes
  52.  
  53.     $ casbah cat filename
  54.  
  55. or to log in as someone else
  56.     
  57.     $ casbah -l jarvis 
  58.  
  59. or to finger someone
  60.  
  61.     $ casbah -F jarvis
  62.  
  63. talk
  64.     $ casbah -T jarvis
  65.  
  66. or mail jarvis some really cool material! ;-)
  67.  
  68.     $ casbah -m jarvis Interesting Stuff < alt.sex.beastiality
  69.  
  70. (so jarvis is kinda weird.)
  71. And there are many other cool options which all save time when typing. The
  72. con man page goes into all the excruciating detail. 
  73.  
  74.     Con is free. However, if you want to send me money -- sure, I'll
  75. take it. I do not have any formal copyright on con -- all that legal stuff 
  76. is garbage anyway. I only ask that you leave my name attached to this
  77. program. If you want to make any modifications, or have any suggestions,
  78. criticisms, ideas, etc, feel free to mail them to me. 
  79.  
  80. Enjoy,
  81.  
  82.     John Navarra
  83.     navarra@nwu.edu
  84.     Northwestern University
  85.  
  86. #! /bin/sh
  87. # This is a shell archive.  Remove anything before this line, then unpack
  88. # it by saving it into a file and typing "sh file".  To overwrite existing
  89. # files, type "sh file -c".  You can also feed this as standard input via
  90. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  91. # will see the following message at the end:
  92. #        "End of shell archive."
  93. # Contents:  README aftp con con.man sample_hostsfile
  94. # Wrapped by navarra@casbah.acns.nwu.edu on Sun Jul  5 22:22:05 1992
  95. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  96. if test -f 'README' -a "${1}" != "-c" ; then 
  97.   echo shar: Will not clobber existing file \"'README'\"
  98. else
  99. echo shar: Extracting \"'README'\" \(2559 characters\)
  100. sed "s/^X//" >'README' <<'END_OF_FILE'
  101. X
  102. XCon is a perl script which facilitates con(tacting) different hosts
  103. Xusing a variety of options. It was written so its users did not have
  104. Xto make a mess of functions, aliases, or other strange contortions
  105. Xso they could get at their favorite computers. Instead, con uses a 
  106. Xfile called .hosts (or whatever you want to call it), and a few 
  107. Xenvironmental variables to determine what exactly you want to do 
  108. Xwith minimal typing. The basic idea is that you have already provided
  109. Xthe information beforehand and are now just using it again. For instance,
  110. Xthe typical entry in .hosts looks like this:
  111. X
  112. X129.105.113.53 <TAB>  casbah.acns.nwu.edu sunny  <TAB> navarra 
  113. X
  114. XThe format is exactly like /etc/hosts except for the possible third
  115. Xfield. 
  116. X
  117. XNow, con makes use of this information in the following way. Say you 
  118. Xwant to rsh to casbah.
  119. Xwith con:
  120. X
  121. X    $ con -r cas
  122. X        $ [alternatively] rsh casbah.acns.nwu.edu -l navarra 
  123. X
  124. X
  125. XNow, say you had a .rhosts entry for yourself on casbah and you wanted 
  126. Xto use rsh to look at a file on a remote machine. With con, this becomes,
  127. X
  128. X    $ con -r cas cat filename
  129. X          $ [alternatively] rsh casbah.acns.nwu.edu -l navarra cat filename
  130. X
  131. XNot good enough you say! (surely you jest). You tell me your shell has 
  132. Xhostname completion so I can easily expand casbah. Then, con is not saving
  133. Xme all that much typing. Ok, I see your point. Therefore, con also uses
  134. Xthe enviromental variable DEFAULT_OPT=/usr/ucb/rsh (that is what it is
  135. Xrecommended to be anyway). Now, the command to check your file is now
  136. Xdown to this:
  137. X
  138. X    $ con cas cat filename
  139. X
  140. XWhat? Still not good enough! (my you are hard to please! ;-) 
  141. XWell, what if you could make a link to con, (call it say, casbah) and
  142. Xhave con recognize what you want to do. Ok, now the command becomes
  143. X
  144. X    $ casbah cat filename
  145. X
  146. Xor to log in as someone else
  147. X    
  148. X    $ casbah -l jarvis 
  149. X
  150. Xor to finger someone
  151. X
  152. X    $ casbah -F jarvis
  153. X
  154. Xtalk
  155. X    $ casbah -T jarvis
  156. X
  157. Xor mail jarvis some really cool material! ;-)
  158. X
  159. X    $ casbah -m jarvis Interesting Stuff < alt.sex.beastiality
  160. X
  161. X(so jarvis is kinda weird.)
  162. XAnd there are many other cool options which all save time when typing. The
  163. Xcon man page goes into all the excruciating detail. 
  164. X
  165. X    Con is free. However, if you want to send me money -- sure, I'll
  166. Xtake it. I do not have any formal copyright on con -- all that legal stuff 
  167. Xis garbage anyway. I only ask that you leave my name attached to this
  168. Xprogram. If you want to make any modifications, or have any suggestions,
  169. Xcriticisms, ideas, etc, feel free to mail them to me. 
  170. X
  171. XEnjoy,
  172. X
  173. XJohn Navarra
  174. Xnavarra@nwu.edu
  175. X
  176. END_OF_FILE
  177. if test 2559 -ne `wc -c <'README'`; then
  178.     echo shar: \"'README'\" unpacked with wrong size!
  179. fi
  180. # end of 'README'
  181. fi
  182. if test -f 'aftp' -a "${1}" != "-c" ; then 
  183.   echo shar: Will not clobber existing file \"'aftp'\"
  184. else
  185. echo shar: Extracting \"'aftp'\" \(1588 characters\)
  186. sed "s/^X//" >'aftp' <<'END_OF_FILE'
  187. X#! /bin/perl
  188. X
  189. X# aftp -- A simple perl script to automate anonymous ftp to a site to
  190. X#      get file(s). Aftp comes with the con distribution but may also
  191. X#      be used separately. For more details using aftp, see the con
  192. X#      man page.
  193. X# Author: John Navarra (navarra@casbah.acns.nwu.edu)
  194. X
  195. X# set up some variables 
  196. X$MODE=$ENV{'MODE'};
  197. X$FTP='/usr/ucb/ftp';
  198. X$ME=$ENV{'USER'};
  199. X$HOSTNAME=`hostname`;
  200. X
  201. Xsub y_or_n {
  202. X    local($prompt) = @_;
  203. X    print STDOUT $prompt;
  204. X    local($answer)=scalar(<STDIN>);
  205. X    if ( $answer !~ /^n/i )  {
  206. X    }
  207. X    else {
  208. X        if ($MODE =~ ascii) { 
  209. X         $MODE=bin;
  210. X          }
  211. X          else {
  212. X             $MODE=ascii;
  213. X           } 
  214. X    }
  215. X
  216. X}
  217. X# If aftp was not called with an ascii or bin option so we will go thru 
  218. X# some rigamorole to figure out the correct mode.  
  219. Xif ($ARGV[0] !~ /^-/) {
  220. X   &y_or_n("Transfer using $MODE mode? [yes] ");
  221. X}
  222. X
  223. Xwhile ($ARGV[0] =~ /^-/) {
  224. X   $_ = shift;
  225. X   if (/^-ascii|^-a/) {
  226. X      $MODE=ascii;
  227. X   }
  228. X   elsif (/^-bin|^-b/) {
  229. X      $MODE=bin;
  230. X   }
  231. X   else {
  232. X      print "aftp: not an option! Use -a[scii] or -b[in] \n";
  233. X      exit(0);
  234. X   }
  235. X}
  236. X$computer=shift;
  237. Xprint "Ftping to $computer using $MODE mode ... \n ";
  238. X
  239. X# Let's do some ftp shall we?
  240. Xopen(FTP, "| $FTP -n $computer"); 
  241. Xprintf(FTP "user anonymous $ME@$HOSTNAME \n");
  242. Xprintf(FTP "$MODE \n" );
  243. Xforeach $path (@ARGV) {
  244. X   ($basename = $path) =~ s!.*/!!;
  245. X   if ($basename eq '*' ) {
  246. X    ($dirpath = $path) =~ s!/[^/]*$!!;
  247. X    printf(FTP "cd $dirpath \n");
  248. X    printf(FTP "prompt \n");
  249. X    printf(FTP "mget * \n");
  250. X   }
  251. X   else { 
  252. X    printf(FTP "get $path $basename \n");
  253. X   }
  254. Xclose (FTP);
  255. X}
  256. X
  257. Xprint "Got it! \n ";
  258. X  
  259. END_OF_FILE
  260. if test 1588 -ne `wc -c <'aftp'`; then
  261.     echo shar: \"'aftp'\" unpacked with wrong size!
  262. fi
  263. chmod +x 'aftp'
  264. # end of 'aftp'
  265. fi
  266. if test -f 'con' -a "${1}" != "-c" ; then 
  267.   echo shar: Will not clobber existing file \"'con'\"
  268. else
  269. echo shar: Extracting \"'con'\" \(22079 characters\)
  270. sed "s/^X//" >'con' <<'END_OF_FILE'
  271. X#! /bin/perl 
  272. X'di';
  273. X'ig00';
  274. X#
  275. X# $Header$
  276. X#
  277. X# $Log$
  278. X# Name: Con     a program to facilitate contacting other machines in a number
  279. X# Version: 1.1  of different ways.  
  280. X# Author:       John Navarra (navarra@nwu.edu)
  281. X
  282. X#=====================CON CONFIGURATION SECTION=============================#
  283. X# Special variables
  284. X
  285. X#     The user may also want to consider setting $HOSTSFILE to his
  286. X# hostname_completion_file (bash) or to whatever variable or path is
  287. X# appropriate depending on your shell.
  288. X$HOSTSFILE=$ENV{'HOSTSFILE'};
  289. X
  290. X# we use rsh so you can specify a command on the command-line.
  291. X# I use the enviromental variable DEFAULT_OPT so more than one person
  292. X# can run the same con with different default options set 
  293. X$DEFAULT_OPT=$ENV{'DEFAULT_OPT'};
  294. X$ME=$ENV{'USER'};
  295. X
  296. X# if $CHECK_HOST is set to 'yes' then failed matches of possible hostnames
  297. X# in $HOSTSFILE will result in a query asking the user if that match is
  298. X# desired as an addition to the hosts file. Otherwise, con will return
  299. X# with the error message "Couldn't find pattern in hosts file."
  300. X$CHECK_HOST=$ENV{'CHECK_HOST'};
  301. X
  302. X# The enviromental variable MAILER is used to determine which mail 
  303. X# program to use. Con barfs with /bin/mail (which no one should be
  304. X# using anyway.  
  305. X$MAILER=$ENV{'MAILER'};
  306. X
  307. X# regular commands and paths. Change these if not correct. 
  308. X$AFTP='/home/u3/navarra/src/con_perl/beta1/aftp';
  309. X$FINGER='/usr/ucb/finger';
  310. X$FTP='/usr/ucb/ftp';
  311. X#Mail is the default. Don't use braindead /bin/mail unless you have to.
  312. X$PING='/usr/etc/ping';
  313. X$RLOGIN='/usr/ucb/rlogin';
  314. X$RSH='/usr/ucb/rsh';
  315. X$TALK='/usr/ucb/talk';
  316. X$OTALK='/usr/ucb/otalk';
  317. X$TELNET='/usr/ucb/telnet';
  318. X$TRACEROUTE='/usr/etc/traceroute';
  319. X
  320. X#============================================================================#
  321. X
  322. X# make this program show up on ps as con.
  323. X$0 = $0;
  324. X
  325. X# Usage message subroutine.
  326. Xsub USAGE_MESG {
  327. X    print "Usage: con [-options] machine \n";
  328. X}
  329. X# Yes or no subroutine.
  330. Xsub y_or_n {
  331. X        local($prompt) = @_;
  332. X        print STDOUT $prompt;
  333. X        local($answer)=scalar(<STDIN>);
  334. X        exit (0) if $answer =~ /^n/i;
  335. X}
  336. X# Subroutine to collect entry for hostsfile.
  337. Xsub FORM_ENTRY {
  338. X        foreach $arg (@_) {;
  339. X        print "Enter info or hit return to accept [$arg] "; 
  340. X        chop($response=scalar(<STDIN>));
  341. X        $response=$response || $arg;
  342. X        }
  343. X        $response;
  344. X} 
  345. X# Subroutine to make entry in hostsfile
  346. Xsub MAKE_ENTRY {
  347. Xopen(HOSTSFILE, ">>$HOSTSFILE") || die "can't open $HOSTSFILE: $! \n";
  348. Xif ($username) {
  349. Xprintf(HOSTSFILE "$ipaddress    $machine    $username\n");
  350. X} 
  351. Xelse {
  352. Xprintf(HOSTSFILE "$ipaddress    $machine\n");
  353. X}
  354. Xclose(HOSTSFILE);
  355. X#should we exit after updating hostfile or continue? You can always !!
  356. Xexit(0);
  357. X}
  358. X# Subroutine to get ip address of a machine.
  359. Xsub GET_IP {
  360. X    ($domain, $aliases)=split(/ /,$machine);
  361. X     $addrs = (gethostbyname($domain))[4];
  362. X        ($a, $b, $c, $d)=unpack('C4', $addrs);
  363. X        $IP="$a.$b.$c.$d";    
  364. X
  365. X}
  366. X# Subroutine to get proper username when contacting machine.
  367. Xsub GET_PROPER_NAME {
  368. X    $id=shift(@ARGV);
  369. X    #check if id is a tty. If so, unshift to get back @ARGV.
  370. X    if ( $id =~ /tty\w\d/) {
  371. X       unshift(@ARGV, $id);
  372. X       $propername=$username || $ME;
  373. X    }
  374. X    else {
  375. X       $propername=$id || $username || $ME;
  376. X    } 
  377. X}
  378. X
  379. X# Subroutine to get correct info from HOSTSFILE. 
  380. Xsub GET_COMP {
  381. X    open(HOSTSFILE, $HOSTSFILE ) || die "Can't open $HOSTSFILE: $! \n";
  382. X       # For rsh-like ability. You can ln -s con host and then just
  383. X       # type host -option etc to run con. 
  384. X       if ( $0 =~ /con/) {
  385. X            $pattern = shift(@ARGV);
  386. X       }
  387. X       else {
  388. X          ($pattern=$0) =~ s!.*/!!;
  389. X       }        
  390. X       while (<HOSTSFILE>) {
  391. X          if (/$pattern/) {
  392. X             ($IP, $computer, $username)=split(/    /,$_);
  393. X         #ok, this is a big pain but it is neccessary to make sure
  394. X         #right thing is chopped.     
  395. X         if ($username) {
  396. X        chop $username;    
  397. X         }
  398. X         else {
  399. X            chop $computer;
  400. X         }
  401. X         #want to use FQDN so ftp can make use of .netrc file.
  402. X         ($domain, $aliases)=split(/ /,$computer);
  403. X          }
  404. X       }
  405. X       if (!$computer && $CHECK_HOST eq 'yes') {
  406. X      &y_or_n("No pattern in hostfile. Do you want to make an entry [yes]");
  407. X      print "ok, your will be prompted separately for a domain name \n";
  408. X      print "with aliases, an IP address, and a possible username. \n";
  409. X      $machine=&FORM_ENTRY($pattern);
  410. X      &GET_IP;
  411. X      $ipaddress=&FORM_ENTRY($IP);
  412. X      $username=&FORM_ENTRY("");
  413. X          &y_or_n("Accept: $ipaddress    $machine        $username [yes]");
  414. X      &MAKE_ENTRY;
  415. X       }
  416. X       if (!$computer) {
  417. X      print "Couldn't find $pattern in $HOSTSFILE \n";
  418. X      exit(0); 
  419. X       }
  420. X}
  421. X
  422. X    
  423. X#======================== Begin main program ===============================#
  424. X
  425. X#Do Null switch checking first. If this succedes, use DEFAULT OPTION. 
  426. Xif ($ARGV[0] !~ /^-/) { 
  427. X   &GET_COMP;
  428. X   if ( $username =~ anonymous ) {    
  429. X      if (@ARGV) {
  430. X     #aftp is automatically called with no option. Aftp will take care
  431. X         #of finding the right mode for file transfer. 
  432. X     print "$AFTP to $domain getting file @ARGV \n";
  433. X         system("$AFTP $domain @ARGV");  
  434. X      }
  435. X      else {
  436. X      #print "$FTP to $domain \n";
  437. X      system("$FTP $domain");
  438. X      }
  439. X   } 
  440. X   elsif ( $DEFAULT_OPT eq $RSH ) {
  441. X      #the line below assures a propername existing. However, if you do
  442. X      #not want to rsh with $username or $ME, rsh will still accept the
  443. X      #line 'rsh host -l username1 -l username2 [commands]'
  444. X      $propername= $username || $ME;
  445. X      #print "Null switch: $DEFAULT_OPT to $IP with $propername @ARGV .\n";
  446. X      system("$DEFAULT_OPT $IP -l $propername @ARGV");
  447. X      exit(0);
  448. X   }
  449. X   else {
  450. X    # telnet is the next likely default selection -- use that syntax. 
  451. X    system("$DEFAULT_OPT $IP @ARGV");
  452. X   }
  453. X}
  454. X
  455. X# Parse other options.
  456. X
  457. Xwhile ($ARGV[0] =~ /^-/) {
  458. X    $_ = shift;
  459. X    if (/^-l/) {
  460. X    &GET_COMP;
  461. X    print "Internet Address: $IP \n";
  462. X    print "Computer name: $computer \n";
  463. X    print "Domain name: $domain     Aliases: $aliases \n";
  464. X    $username='<none>' if (!$username);
  465. X     print "Common username (or friend): $username   \n";  
  466. X    exit(0);
  467. X    }
  468. X    elsif (/^-w/) {
  469. X        open(HOSTSFILE, ">>$HOSTSFILE") || die "can't open $HOSTSFILE: $! \n";
  470. X        printf(HOSTSFILE "@ARGV\n");
  471. X        close(HOSTSFILE);
  472. X        print "appended @ARGV to $HOSTSFILE \n";
  473. X    exit(0);
  474. X    }
  475. X    elsif (/^-h/) { 
  476. X    print STDOUT <<"END_OF_HELP";
  477. X
  478. X        Con help screen (anything in [] are optional)
  479. X
  480. XOption   usage explanation                      usage
  481. X------------------------------------------------------------------------------
  482. X""|-r    rsh host [username] [commands]         con -r host [username] [cmds]
  483. X-t       telnet host [port]                     con -t host [port]
  484. X-f       ftp host [filename]                    con -f host [/pathtofile]
  485. X-F       finger [-fopt] username@host           con -F host [user] [fopt]
  486. X-h       print brief help screen                con -h
  487. X-l       list host info                         con -l host
  488. X-m       Mail|elm [-s subject] username@host    con -m host [user] ['Subject']
  489. X-p       ping [-option] host [other]            con -p host [-opt] [other]
  490. X-R       traceroute [[-opt] other] host         con -R host [[-opt other]
  491. X-T|To    [o]talk username@host [tty]            con -T[o] host [user] [tty]
  492. X         Note: no packetsize opt available.
  493. X-w       direct write to HOSTFILE               con -w 'IP<TAB>addr<TAB>name'
  494. X
  495. XEND_OF_HELP
  496. X
  497. X    print STDOUT "\f";
  498. X    }    
  499. X    elsif (/^-p/) {
  500. X    &GET_COMP;
  501. X        # make con [-p] host [-option]
  502. X          if (@ARGV[0] =~ /^-/) {
  503. X             $add_opts=shift(@ARGV);
  504. X             #print "loop1: $PING $add_opts $IP @ARGV \n";
  505. X             system("$PING $add_opts $IP @ARGV");
  506. X          }
  507. X          else {
  508. X             #print "loop 2: $PING $IP @ARGV \n";
  509. X             system("$PING $IP @ARGV");
  510. X          }
  511. X    }
  512. X    elsif (/^-R/) {
  513. X    #No packet capibility. Too hard to parse all the options to traceroute
  514. X    &GET_COMP;
  515. X    system("$TRACEROUTE @ARGV $IP");
  516. X    exit(0);
  517. X    }
  518. X    elsif (/^-r/) {
  519. X    &GET_COMP;
  520. X    #propername will always exist. 
  521. X    $propername= $username || $ME;
  522. X    #print "$RSH $IP -l $propername @ARGV \n"; 
  523. X    system("$RSH $IP -l $propername @ARGV");    
  524. X    exit(0);
  525. X    }
  526. X    elsif (/^-f|^-fa|^-fb/) {
  527. X    if (/^-fa/) {
  528. X       &GET_COMP;
  529. X       #call auto ftp program and get file(s).
  530. X        print "aftp -a to $domain for file(s) @ARGV \n";
  531. X       system("$AFTP -ascii $domain @ARGV");
  532. X           }
  533. X        elsif (/^-fb/) {    
  534. X       &GET_COMP;
  535. X       print "aftp -b to $domain for file(s) @ARGV \n";
  536. X       system("$AFTP -bin $domain @ARGV");
  537. X       }
  538. X    else {
  539. X       &GET_COMP;
  540. X       if (@ARGV) {
  541. X          #again, aftp will find the right mode. 
  542. X          print "aftp to $domain for file(s) @ARGV \n";
  543. X              system("$AFTP $domain @ARGV");
  544. X           }
  545. X       else {
  546. X          print "$FTP to $domain \n";
  547. X          system("$FTP $domain");
  548. X       }
  549. X    }
  550. X    exit(0);
  551. X    }
  552. X    elsif (/^-t/) {
  553. X    &GET_COMP;
  554. X     if (@ARGV) {
  555. X    print "$TELNET to $IP on port # @ARGV \n";
  556. X    system("$TELNET $IP @ARGV");    
  557. X    }
  558. X    #this will match any number (I think). If you have a username
  559. X    #consisting of entirely numbers, con will think it is a valid
  560. X     #port # with the -t option. I don't think this is usually the
  561. X    #case so for now, a legit port number can be in the username
  562. X    #field for use with this option.
  563. X        elsif ($username =~ /^(\d+\.?\d*)$/) {
  564. X    print "$TELNET to $IP on port # $username \n";
  565. X    system("$TELNET $IP $username");
  566. X    }
  567. X    else {
  568. X    print "$TELNET to $IP \n";
  569. X    system("$TELNET $IP");
  570. X    }
  571. X    exit(0);    
  572. X    }
  573. X    elsif (/^-m/) {
  574. X    &GET_COMP;
  575. X     &GET_PROPER_NAME;    
  576. X    print "$MAILER -s \"@ARGV\" $propername@$domain \n";
  577. X    #exec this in a subshell so '< filename' can be used on
  578. X    #the commmand line
  579. X    system("($MAILER -s \"@ARGV\" $propername@$domain)");
  580. X    exit(0);
  581. X   }
  582. X    elsif (/^-F/) {
  583. X    #make finger [-opts] username@host 
  584. X    &GET_COMP;
  585. X          if (@ARGV[0] =~ /^-/) {
  586. X        $finger_opt=shift(@ARGV);
  587. X        &GET_PROPER_NAME;
  588. X         #print "loop1: $FINGER $finger_opt $propername@$IP \n";
  589. X         system("$FINGER $finger_opt $propername@$IP");
  590. X        exit(0);
  591. X      }
  592. X      else {
  593. X        &GET_PROPER_NAME;
  594. X        #print "loop2: $FINGER @ARGV $propername@$IP \n";
  595. X        system("$FINGER @ARGV $propername@$IP");
  596. X        exit(0);
  597. X      }
  598. X    }
  599. X    elsif (/^-T|^-To/) {
  600. X    #make talk username@host [tty]
  601. X       if (/^-To/) {
  602. X        &GET_COMP;
  603. X        &GET_PROPER_NAME;
  604. X        #print "loop1: $OTALK $propername@$IP @ARGV\n";
  605. X        system("$TALK $propername@$IP");
  606. X        exit(0);
  607. X       }
  608. X       else {
  609. X        &GET_COMP;
  610. X        &GET_PROPER_NAME;
  611. X        #print "loop2: $TALK $propername@$IP @ARGV \n";    
  612. X        system("$TALK $propername@$IP");
  613. X        exit(0);
  614. X       }
  615. X    }
  616. X    else  {
  617. X    print "Unrecognized switch: $_ \n";
  618. X    &USAGE_MESG;
  619. X    } 
  620. X}
  621. X
  622. X
  623. X
  624. X###############################################################
  625. X
  626. X    # These next few lines are legal in both Perl and nroff.
  627. X
  628. X.00;                       # finish .ig
  629. X'di           \" finish diversion--previous line must be blank
  630. X.nr nl 0-1    \" fake up transition to first page again
  631. X.nr % 0         \" start at page 1
  632. X'; __END__ ##### From here on it's a standard manual page #####
  633. X
  634. X.TH CON 1 "May 2, 1992"
  635. X.AT 3
  636. X.SH NAME
  637. Xcon \- A program to facilitate contacting a host in a variety of ways.
  638. X.SH SYNOPSIS
  639. X.B con  
  640. X[
  641. X.B -''fFhlmprRtTw
  642. X] [
  643. X.B hostname
  644. X] [
  645. X.B other
  646. X]
  647. X.SH DESCRIPTION
  648. X.I Con
  649. Xis a perl script that facilitates the various ways of connecting to a
  650. Xmachine, remote or local, by minimizing the repetitive (and unneeded) 
  651. Xtyping one has to do to uniquely identify a host, a login name, and an
  652. Xoption (telnet, rlogin, etc). 
  653. X.I Con
  654. Xis used in conjunction with a few environmental variables and a hosts
  655. Xfile whose syntax is similiar to /etc/hosts. 
  656. X
  657. XThe primary environmental variable used is 
  658. X.I HOSTSFILE
  659. Xwhich specifies the path to a file which contains the following information:
  660. X
  661. XIP ADDRESS      domain name aliases       possible username
  662. X129.105.113.52  casbah.acns.nwu.edu cas   navarra
  663. X
  664. XEach field must be separated by a <TAB> and each domain name alias must 
  665. Xbe separated by a <SPACE>. The HOSTSFILE need not reside in your home
  666. Xdirectory (although that is probably wise). For bash and/or zsh compatibility
  667. Xyou can set HOSTSFILE to whatever file you use for hostname completion.
  668. X.I Con
  669. Xuses the HOSTSFILE as a reference to find the correct computer (and possible
  670. Xusername) to use when called with one of many options. Thus, the user need 
  671. Xnot type the full domain name address to connect, only enough to uniquely
  672. Xidentify the requested computer. For possible hosts casbah.acns.nwu.edu and
  673. Xcannibal.acns.nwu.edu, the user could identify casbah with the call 'con
  674. Xcas' but not with the call 'con ca'.
  675. X
  676. X.SH USAGE
  677. X
  678. X.I Con
  679. Xhas many different options. Some of those are used far more than others.
  680. XFor that reason, 
  681. X.I con 
  682. Xuses the variable 
  683. X.I DEFAULT_OPT
  684. Xas a null option. The configuration section sets up DEFAULT_OPT as an
  685. Xenviromental variable. This need not be the case if all who use con agree
  686. Xon a DEFAULT_OPT. It is recommended that
  687. X.I rsh
  688. Xbe used for reasons which will become apparent later in the document. For
  689. Xthe sake of explaining the use of 
  690. X.I con,
  691. XI will assume this is the case. 
  692. X
  693. X.SH OPTIONS
  694. X
  695. X""|-r) rsh host [username] [commands] or
  696. X       ftp [or auto ftp] host [filename]
  697. X
  698. Xpart 1 [rsh]: 
  699. X       The most common use for 
  700. X.I con  
  701. Xwill be logging into a remote computer. The null option or -r option
  702. Xuses the same syntax as 
  703. X.I rsh. 
  704. XThe proper username to use with this option is determined as follows:
  705. XA username specified on the command line is used before any username in
  706. XHOSTSFILE. To specify a username on the command line, use the same
  707. Xsyntax as
  708. X.I rsh:
  709. X
  710. X      %example: con cas -l username [commands]
  711. X
  712. XIf no username is specified on the commmand line, the username in the
  713. Xthird field of HOSTSFILE is used. If no username exists in HOSTSFILE
  714. Xthen the username on the local machine ($USER) is used. Note: because
  715. Xthis option always defaults to $USER, there is no reason to put your
  716. Xusername on local machine as the third field in HOSTSFILE.
  717. X
  718. XLike rsh, 
  719. Xif the name of the file from which 
  720. X.I con 
  721. Xwas executed is anything other
  722. Xthan ``con'', that name will be used as its
  723. X.I hostname
  724. Xargument. Thus, if a symbolic link is made to con with a unique hostname
  725. Xto search for in HOSTSFILE, that name will be used (along with any con
  726. Xoption) to connect to a host. This feature is particularly useful to
  727. Xcut down on needless typing. All command lines will now be of the form:
  728. X
  729. X     hostname -con_opt [-other_opt]  [username] [other]
  730. X     %example: casbah -r -l bill cat file 
  731. X               #rsh casbah.acns.nwu.edu -l bill cat file 
  732. X
  733. Xpart 2 [ftp]:
  734. X     If the username field of HOSTSFILE contains the string 'anonymous',
  735. X.I con
  736. Xwill prform an ftp to the host.  
  737. X.I Con
  738. Xwill work in conjunction with the 
  739. X.I .netrc
  740. Xfile to automatically log you into the remote computer. 
  741. X
  742. XIf a path-to-filename is given as the last argument, 
  743. X.I con
  744. Xwill use the 
  745. X.I aftp
  746. X[auto ftp] program which comes with the distribution. This program will 
  747. XNOT use your 
  748. X.I .netrc 
  749. Xfile but will log you in to the remote host with 'local_username@local_host'.
  750. XThe filename MUST be the full path name to the file you want to get.
  751. X.I Aftp   
  752. Xuses the enviromental variable MODE (bin or ascii) to determine which
  753. Xmode you want to transfer your file with. However, just as a precaution,
  754. X.I aftp
  755. Xasks for confirmation before it gets the file. The recieved file is left
  756. Xin whatever directory 
  757. X.I con
  758. Xwas invoked from.
  759. X.I Aftp
  760. Xcan also get multiples files from one directory, just include a ``*''
  761. Xin the full pathname argument. 
  762. X
  763. X      %example: con prep
  764. X                #username=anonymous ==> ftp prep.ai.mit.edu
  765. X      %example: con prep /pub/gnu/filename.tar.Z
  766. X                #auto ftp to prep for filename.tar.Z
  767. X      %example: con uu /published/unix-world/*
  768. X                #auto ftp to ftp.uu.net to do an mget on all
  769. X                #files in directory /published/unix-world.
  770. X
  771. XThe auto ftp program is not extraordinarily robust. If you want to use
  772. Xyour own, make sure the path is changed in the Configuration section. More 
  773. Xfeatures may be added to 
  774. X.I aftp
  775. Xlater.
  776. X
  777. X-t) telnet host [port]
  778. X
  779. X    A port number may be specified on the command line or as a username
  780. Xin HOSTSFILE. As usual, if a port number is specified on the command line,
  781. Xit will take precedence over the username field. 
  782. X
  783. X      %example: con -t phoenix 25
  784. X                #telnet to mail port on phoenix.whatever 
  785. X
  786. XNote: if you use telnet as a default option, the port number ability in
  787. XHOSTSFILE is lost. The number check is only made when using this option.
  788. X
  789. X-f|-fa|-fb) ftp [or auto ftp] host [filename]
  790. X
  791. X    This option works in the same manner described above to ftp to a
  792. Xhost. The difference is that the user may specify directly what mode
  793. Xhe wants the files to be transferred in (thus bypassing confirmation
  794. Xby
  795. X.I aftp
  796. X)
  797. XAlso, this option, (-f), is used for hosts which are not strictly going 
  798. Xto be contacted for anonymous ftp (no 'anonymous' string in HOSTSFILE). 
  799. X
  800. X-F) finger [-opts] username@host
  801. X
  802. X     This option is used to finger a username. Any valid finger option can
  803. Xbe used but must be the last argument. The username precedence is the same 
  804. Xas above.
  805. X
  806. X      %example: con -F cas nut-boy [-l]
  807. X                #finger [-l] nut-boy@casbah.acns.nwu.edu
  808. X
  809. X      %example: con -F prin -s
  810. X                #finger -s (name in 3rd field)@princeton.edu
  811. X
  812. X-h) print out brief help screen
  813. X
  814. X    This option displays a half-page help screen which shows how the
  815. Xvarious options are used. 
  816. X
  817. X-l) list host
  818. X
  819. X    This option is used to check an entry in HOSTSFILE. If a pattern is
  820. Xfound, the relevant information on that host is displayed:
  821. X
  822. X     %example: con -l casbah
  823. X               Internet Address: 129.105.113.52
  824. X               Domain name (aliases): casbah.acns.nwu.edu
  825. X               Common username (or friend): <none>
  826. X
  827. X
  828. X-m) Mail or elm [-s "Subject"] username@host [ < filename ]
  829. X
  830. X     This option is used to send mail. It uses the enviromental variable
  831. X.I MAILER
  832. Xto determine which mail program to use. It is recommended that either 
  833. Xelm or Mail are used (no other mailers have been tested so far). Again,
  834. Xas in all other options, this option determines which username to use
  835. Xbased on the order of precedence described above. However, if the user 
  836. Xwants to specify a Suject on the command line, he MUST specify a username.
  837. XOtherwise, the info passed to the mailer can become botched. 
  838. X
  839. X      %example: con -m cas    #MAILER=elm
  840. X                #elm -s "" navarra@casbah.acns.nwu.edu
  841. X                #sends a null subject line and puts user in 
  842. X                #send only mode.
  843. X
  844. X      %example: con -m cas bill this is a test
  845. X                #elm -s "this is a test" bill@casbah
  846. X                #the username bill must be included.
  847. X
  848. X      %example: con -m cas < filename
  849. X                #elm -s "" navarra@casbah < filename 
  850. X
  851. X      %example: con -m cas fred Schedule < Schedule
  852. X                #elm -s "Schedule" fred@casbah < Schedule
  853. X
  854. XIn the last two examples, a file was transmitted. For this operation,
  855. X.I con
  856. Xcreates a subshell and the contents of filename are sent to it to be
  857. Xprocessed by the mailer. 
  858. X
  859. X-p) ping [-opts] host [other]
  860. X
  861. X    This option is used to do a ping on a host. All ping options should
  862. Xbe available.
  863. X
  864. X      %example: con -p cas -v
  865. X                #ping -v casbah.acns.nwu.edu
  866. X
  867. X      %example: con -p cas -s 64 2
  868. X                #ping -s casbah.acns.nwu.edu 64 2
  869. X
  870. X-R) traceroute [opt [other]] host
  871. X
  872. X    This option is used to do a traceroute to a host. Because of the
  873. Xnumerous options to traceroute, the packetsize option is not available
  874. Xdue to parsing problems. All other options are available.
  875. X
  876. X      %example: con -R sage -n
  877. X                #traceroute -n sage.cc.purdue.edu
  878. X
  879. X      %example: con -R sage -nm 5
  880. X                #traceroute -nm 5 sage.cc.purdue.edu
  881. X
  882. X-T|To) [o]talk username@host [tty]
  883. X
  884. X     This option is used to talk to username. Because some vendors are
  885. Xstill using the braindead otalk (now who could that be?), a -To option
  886. Xis available. The username precedence is the same as above. 
  887. X
  888. X      %example: con -T cas jarvis ttyp1
  889. X                #talk jarvis@casbah.acns.nwu.edu ttyp1
  890. X   
  891. X      %example: con -To thor  
  892. X                #username=dick ==> otalk dick@thor 
  893. X
  894. X
  895. X-w) direct write to HOSTSFILE 
  896. X
  897. X    This option is used to make an entry in HOSTSFILE. It is assumed that
  898. Xthe user knows the relavent information neccesary to make a proper entry
  899. X(IP#   domain alias   username). The entry must be enclosed in quotes
  900. Xwith the proper TABS between the fields. A TAB can be entered on the
  901. Xcommand line by typing C-V TAB (control-v TAB). The entry is appended to
  902. Xthe end of HOSTSFILE.
  903. X
  904. X      %example: con -w "129.10.11.3<TAB>io.nwu.edu<TAB>biff"
  905. X        
  906. X.I Con
  907. Xalso provides a more user-friendly way to make entries in HOSTSFILE. 
  908. XIf the environmental variable
  909. X.I CHECK_HOST 
  910. Xis set to ``yes'', then for any hostname pattern entered on the command
  911. Xline not found in HOSTSFILE, the user will be prompted if he wants to 
  912. Xmake an entry. The process is demonstrated as follows: 
  913. X
  914. X[casbah:112] ~ -> con cas
  915. X.PD 0
  916. X.TP
  917. XNo pattern in hostfile. Do you want to make an entry [yes]
  918. X.TP
  919. Xok, your will be prompted separately for a domain name
  920. X.TP
  921. Xwith aliases, an IP address, and a possible username.
  922. X.TP
  923. XEnter info or hit return to accept [cas] casbah.acns.nwu.edu
  924. X.TP
  925. XEnter info or hit return to accept [129.105.113.52]
  926. X.TP
  927. XEnter info or hit return to accept [] fred
  928. X.TP
  929. XAccept: 129.105.113.52    casbah.acns.nwu.edu    fred [yes]
  930. X.br
  931. X
  932. XNote that the IP address is resolved if given a legitimate domain name.
  933. XIn that way, the user just needs to hit RETURN to accept the address
  934. Xand 
  935. X.I con
  936. Xwill make sure it is written correctly to HOSTSFILE. Note also the 
  937. Xthe default username is nothing (fred was used in the example).
  938. X
  939. X
  940. X
  941. X.SH ENVIRONMENTAL VARIABLES
  942. X.PD 0
  943. X.B HOSTSFILE    
  944. X.TP
  945. X.B DEFAULT_OPT  
  946. X.TP
  947. X.B CHECK_HOST  
  948. X.TP
  949. X.B MAILER
  950. X.TP
  951. X.B MODE
  952. X.br
  953. X
  954. X.SH FILES
  955. X.PD 0
  956. X.B $HOME/$HOSTSFILE
  957. X.TP
  958. X.B ./aftp (auto ftp program)
  959. X.br
  960. X
  961. X.SH AUTHOR
  962. X.PD 0
  963. X.B John Navarra (navarra@nwu.edu)
  964. X.TP
  965. X.B Academic Computing and Networking Services
  966. X.TP
  967. X.B Northwestern University 
  968. X.br
  969. X
  970. X.SH BUGS
  971. XThere are probably a few bugs here and there. I have only tested
  972. X.I con
  973. Xon a SunOS and  Mach machines. I am interested in hearing about any
  974. Xbugs and suggestions for improvement. 
  975. END_OF_FILE
  976. if test 22079 -ne `wc -c <'con'`; then
  977.     echo shar: \"'con'\" unpacked with wrong size!
  978. fi
  979. chmod +x 'con'
  980. # end of 'con'
  981. fi
  982. if test -f 'con.man' -a "${1}" != "-c" ; then 
  983.   echo shar: Will not clobber existing file \"'con.man'\"
  984. else
  985. echo shar: Extracting \"'con.man'\" \(12318 characters\)
  986. sed "s/^X//" >'con.man' <<'END_OF_FILE'
  987. X
  988. XCON(1)                   USER COMMANDS                     CON(1)
  989. X
  990. XNAME
  991. X     con - A program to facilitate contacting a host in a variety
  992. X     of ways.
  993. X
  994. XSYNOPSIS
  995. X     con [ -''fFhlmprRtTw ] [ hostname ] [ other ]
  996. X
  997. XDESCRIPTION
  998. X     Con is a perl script that facilitates the  various  ways  of
  999. X     connecting  to a machine, remote or local, by minimizing the
  1000. X     repetitive (and unneeded) typing one has to do  to  uniquely
  1001. X     identify  a  host, a login name, and an option (telnet, rlo-
  1002. X     gin, etc). Con is used in conjunction with a few environmen-
  1003. X     tal  variables  and a hosts file whose syntax is similiar to
  1004. X     /etc/hosts.
  1005. X
  1006. X     The primary environmental variable used is  HOSTSFILE  which
  1007. X     specifies  the  path  to a file which contains the following
  1008. X     information:
  1009. X
  1010. X     IP ADDRESS      domain name aliases       possible  username
  1011. X     129.105.113.52  casbah.acns.nwu.edu cas   navarra
  1012. X
  1013. X     Each field must be separated by a <TAB> and each domain name
  1014. X     alias must be separated by a <SPACE>. The HOSTSFILE need not
  1015. X     reside in your home directory  (although  that  is  probably
  1016. X     wise).  For  bash  and/or  zsh  compatibility  you  can  set
  1017. X     HOSTSFILE to whatever file you use for hostname completion.
  1018. X
  1019. X     Con uses the HOSTSFILE as a reference to  find  the  correct
  1020. X     computer (and possible username) to use when called with one
  1021. X     of many options. Thus, the  user  need  not  type  the  full
  1022. X     domain  name  address  to  connect,  only enough to uniquely
  1023. X     identify  the  requested  computer.   For   possible   hosts
  1024. X     casbah.acns.nwu.edu   and  cannibal.acns.nwu.edu,  the  user
  1025. X     could identify casbah with the call 'con cas' but  not  with
  1026. X     the call 'con ca'.
  1027. X
  1028. X
  1029. XUSAGE
  1030. X     Con has many different options. Some of those are  used  far
  1031. X     more  than  others.   For that reason, con uses the variable
  1032. X     DEFAULT_OPT as a null option. The configuration section sets
  1033. X     up DEFAULT_OPT as an enviromental variable. This need not be
  1034. X     the case if all who use con agree on a  DEFAULT_OPT.  It  is
  1035. X     recommended  that  rsh be used for reasons which will become
  1036. X     apparent later in the document. For the sake  of  explaining
  1037. X     the use of con, I will assume this is the case.
  1038. X
  1039. X
  1040. XOPTIONS
  1041. X     ""|-r) rsh host [username] [commands] or
  1042. X            ftp [or auto ftp] host [filename]
  1043. X
  1044. X     part 1 [rsh]:
  1045. X            The most common use for con will be  logging  into  a
  1046. X     remote  computer. The null option or -r option uses the same
  1047. X     syntax as rsh. The proper username to use with  this  option
  1048. X     is  determined  as follows: A username specified on the com-
  1049. X     mand line is used  before  any  username  in  HOSTSFILE.  To
  1050. X     specify  a username on the command line, use the same syntax
  1051. X     as rsh:
  1052. X
  1053. X           %example: con cas -l username [commands]
  1054. X
  1055. X     If no username is specified on the commmand line, the  user-
  1056. X     name in the third field of HOSTSFILE is used. If no username
  1057. X     exists in HOSTSFILE then the username on the  local  machine
  1058. X     ($USER)  is  used. Note: because this option always defaults
  1059. X     to $USER, there is no reason to put your username  on  local
  1060. X     machine as the third field in HOSTSFILE.
  1061. X
  1062. X     Like rsh, if the name of the file from which  con  was  exe-
  1063. X     cuted is anything other than ``con'', that name will be used
  1064. X     as its hostname argument. Thus, if a symbolic link  is  made
  1065. X     to  con  with  a unique hostname to search for in HOSTSFILE,
  1066. X     that name will be used (along with any con option)  to  con-
  1067. X     nect  to  a host. This feature is particularly useful to cut
  1068. X     down on needless typing. All command lines will  now  be  of
  1069. X     the form:
  1070. X
  1071. X          hostname -con_opt [-other_opt]  [username] [other]
  1072. X          %example: casbah -r -l bill cat file
  1073. X                    #rsh casbah.acns.nwu.edu -l bill cat file
  1074. X
  1075. X     part 2 [ftp]:
  1076. X          If the username field of HOSTSFILE contains the  string
  1077. X     'anonymous',  con  will  perform an ftp to the host. Con will
  1078. X     work in conjunction with the .netrc  file  to  automatically
  1079. X     log you into the remote computer.
  1080. X
  1081. X     If a path-to-filename is given as  the  last  argument,  con
  1082. X     will  use  the  aftp [auto ftp] program which comes with the
  1083. X     distribution. This program will NOT use your .netrc file but
  1084. X     will    log    you    in    to    the   remote   host   with
  1085. X     'local_username@local_host'.  The filename MUST be the  full
  1086. X     path  name  to  the  file  you  want  to get.  Aftp uses the
  1087. X     enviromental variable MODE (bin or ascii) to determine which
  1088. X     mode you want to transfer your file with. However, just as a
  1089. X     precaution, aftp asks for confirmation before  it  gets  the
  1090. X     file.  The  recieved  file is left in whatever directory con
  1091. X     was invoked from.  Aftp can also get  multiples  files  from
  1092. X     one  directory,  just  include  a ``*'' in the full pathname
  1093. X     argument.
  1094. X
  1095. X           %example: con prep
  1096. X                     #username=anonymous ==> ftp prep.ai.mit.edu
  1097. X           %example: con prep /pub/gnu/filename.tar.Z
  1098. X                     #auto ftp to prep for filename.tar.Z
  1099. X           %example: con uu /published/unix-world/*
  1100. X                     #auto ftp to ftp.uu.net to do an mget on all
  1101. X                     #files in directory /published/unix-world.
  1102. X
  1103. X     The auto ftp program is not extraordinarily robust.  If  you
  1104. X     want  to  use your own, make sure the path is changed in the
  1105. X     Configuration section. More features may be  added  to  aftp
  1106. X     later.
  1107. X
  1108. X     -t) telnet host [port]
  1109. X
  1110. X         A port number may be specified on the command line or as
  1111. X     a  username  in  HOSTSFILE.  As  usual,  if a port number is
  1112. X     specified on the command line, it will take precedence  over
  1113. X     the username field.
  1114. X
  1115. X           %example: con -t phoenix 25
  1116. X                     #telnet to mail port on phoenix.whatever
  1117. X
  1118. X     Note: if you use telnet as a default option, the port number
  1119. X     ability  in HOSTSFILE is lost. The number check is only made
  1120. X     when using this option.
  1121. X
  1122. X     -f|-fa|-fb) ftp [or auto ftp] host [filename]
  1123. X
  1124. X         This option works in the same manner described above  to
  1125. X     ftp  to  a host. The difference is that the user may specify
  1126. X     directly what mode he wants the files to be  transferred  in
  1127. X     (thus  bypassing  confirmation  by aftp ) Also, this option,
  1128. X     (-f), is used for hosts which are not strictly going  to  be
  1129. X     contacted  for  anonymous  ftp  (no  'anonymous'  string  in
  1130. X     HOSTSFILE).
  1131. X
  1132. X     -F) finger [-opts] username@host
  1133. X
  1134. X          This option is used to finger  a  username.  Any  valid
  1135. X     finger option can be used but must be the last argument. The
  1136. X     username precedence is the same as above.
  1137. X
  1138. X           %example: con -F cas nut-boy [-l]
  1139. X                     #finger [-l] nut-boy@casbah.acns.nwu.edu
  1140. X
  1141. X           %example: con -F prin -s
  1142. X                     #finger -s (name in 3rd field)@princeton.edu
  1143. X
  1144. X     -h) print out brief help screen
  1145. X
  1146. X         This option displays a half-page help screen which shows
  1147. X     how the various options are used.
  1148. X
  1149. X     -l) list host
  1150. X
  1151. X         This option is used to check an entry in HOSTSFILE. If a
  1152. X     pattern  is  found, the relevant information on that host is
  1153. X     displayed:
  1154. X
  1155. X          %example: con -l casbah
  1156. X                    Internet Address: 129.105.113.52
  1157. X                    Domain name (aliases): casbah.acns.nwu.edu
  1158. X                    Common username (or friend): <none>
  1159. X
  1160. X
  1161. X     -m) Mail or elm [-s "Subject"] username@host [ < filename ]
  1162. X
  1163. X          This option is used to send mail. It uses  the  enviro-
  1164. X     mental  variable  MAILER  to determine which mail program to
  1165. X     use. It is recommended that either elm or Mail are used  (no
  1166. X     other  mailers  have  been  tested so far). Again, as in all
  1167. X     other options, this option determines which username to  use
  1168. X     based  on  the order of precedence described above. However,
  1169. X     if the user wants to specify a Suject on the  command  line,
  1170. X     he  MUST  specify a username.  Otherwise, the info passed to
  1171. X     the mailer can become botched.
  1172. X
  1173. X           %example: con -m cas    #MAILER=elm
  1174. X                     #elm -s "" navarra@casbah.acns.nwu.edu
  1175. X                     #sends a null subject line and puts user in
  1176. X                     #send only mode.
  1177. X
  1178. X           %example: con -m cas bill this is a test
  1179. X                     #elm -s "this is a test" bill@casbah
  1180. X                     #the username bill must be included.
  1181. X
  1182. X           %example: con -m cas < filename
  1183. X                     #elm -s "" navarra@casbah < filename
  1184. X
  1185. X           %example: con -m cas fred Schedule < Schedule
  1186. X                     #elm -s "Schedule" fred@casbah < Schedule
  1187. X
  1188. X     In the last two examples, a file was transmitted.  For  this
  1189. X     operation,  con  creates  a  subshell  and  the  contents of
  1190. X     filename are sent to it to be processed by the mailer.
  1191. X
  1192. X     -p) ping [-opts] host [other]
  1193. X
  1194. X         This option is used to do a ping on  a  host.  All  ping
  1195. X     options should be available.
  1196. X
  1197. X           %example: con -p cas -v
  1198. X                     #ping -v casbah.acns.nwu.edu
  1199. X
  1200. X           %example: con -p cas -s 64 2
  1201. X                     #ping -s casbah.acns.nwu.edu 64 2
  1202. X
  1203. X     -R) traceroute [opt [other]] host
  1204. X
  1205. X         This option is used  to  do  a  traceroute  to  a  host.
  1206. X     Because  of  the numerous options to traceroute, the packet-
  1207. X     size option is not available due to  parsing  problems.  All
  1208. X     other options are available.
  1209. X
  1210. X           %example: con -R sage -n
  1211. X                     #traceroute -n sage.cc.purdue.edu
  1212. X
  1213. X           %example: con -R sage -nm 5
  1214. X                     #traceroute -nm 5 sage.cc.purdue.edu
  1215. X
  1216. X     -T|To) [o]talk username@host [tty]
  1217. X
  1218. X          This option is used to talk to username.  Because  some
  1219. X     vendors  are  still using the braindead otalk (now who could
  1220. X     that be?), a -To option  is  available.  The  username  pre-
  1221. X     cedence is the same as above.
  1222. X
  1223. X           %example: con -T cas jarvis ttyp1
  1224. X                     #talk jarvis@casbah.acns.nwu.edu ttyp1
  1225. X
  1226. X           %example: con -To thor
  1227. X                     #username=dick ==> otalk dick@thor
  1228. X
  1229. X
  1230. X     -w) direct write to HOSTSFILE
  1231. X
  1232. X         This option is used to make an entry in HOSTSFILE. It is
  1233. X     assumed  that  the  user knows the relavent information nec-
  1234. X     cesary to make a proper entry (IP#    domain  alias    user-
  1235. X     name).  The entry must be enclosed in quotes with the proper
  1236. X     TABS between the fields. A TAB can be entered on the command
  1237. X     line  by  typing  C-V  TAB  (control-v  TAB).  The  entry is
  1238. X     appended to the end of HOSTSFILE.
  1239. X
  1240. X           %example: con -w "129.10.11.3<TAB>io.nwu.edu<TAB>biff"
  1241. X
  1242. X     Con also provides a more user-friendly way to  make  entries
  1243. X     in  HOSTSFILE.  If  the environmental variable CHECK_HOST is
  1244. X     set to ``yes'', then for any hostname pattern entered on the
  1245. X     command  line  not  found  in  HOSTSFILE,  the  user will be
  1246. X     prompted if he wants to make an entry. The process is demon-
  1247. X     strated as follows:
  1248. X
  1249. X     [casbah:112] ~ -> con cas
  1250. X     No pattern in hostfile. Do you want to make an entry [yes]
  1251. X     ok, your will be prompted separately for a domain name
  1252. X     with aliases, an IP address, and a possible username.
  1253. X     Enter info or hit return to accept [cas] casbah.acns.nwu.edu
  1254. X     Enter info or hit return to accept [129.105.113.52]
  1255. X     Enter info or hit return to accept [] fred
  1256. X     Accept: 129.105.113.52    casbah.acns.nwu.edu     fred [yes]
  1257. X
  1258. X          Note that the IP address is resolved if given a legiti-
  1259. X          mate  domain name.  In that way, the user just needs to
  1260. X          hit RETURN to accept the address and con will make sure
  1261. X          it is written correctly to HOSTSFILE. Note also the the
  1262. X          default username is nothing (fred was used in the exam-
  1263. X          ple).
  1264. X
  1265. X
  1266. X
  1267. XENVIRONMENTAL VARIABLES
  1268. X     HOSTSFILE
  1269. X     DEFAULT_OPT
  1270. X     CHECK_HOST
  1271. X     MAILER
  1272. X     MODE
  1273. X
  1274. XFILES
  1275. X     $HOME/$HOSTSFILE
  1276. X     ./aftp (auto ftp program)
  1277. X
  1278. XAUTHOR
  1279. X     John Navarra (navarra@nwu.edu)
  1280. X     Academic Computing and Networking Services
  1281. X     Northwestern University
  1282. X
  1283. XBUGS
  1284. X     There are probably a few bugs here and there.  I  have  only
  1285. X     tested con on a SunOS and  Mach machines. I am interested in
  1286. X     hearing about any bugs and suggestions for improvement.
  1287. X
  1288. END_OF_FILE
  1289. if test 12318 -ne `wc -c <'con.man'`; then
  1290.     echo shar: \"'con.man'\" unpacked with wrong size!
  1291. fi
  1292. # end of 'con.man'
  1293. fi
  1294. if test -f 'sample_hostsfile' -a "${1}" != "-c" ; then 
  1295.   echo shar: Will not clobber existing file \"'sample_hostsfile'\"
  1296. else
  1297. echo shar: Extracting \"'sample_hostsfile'\" \(728 characters\)
  1298. sed "s/^X//" >'sample_hostsfile' <<'END_OF_FILE'
  1299. X# Local hosts
  1300. X129.105.113.52    casbah.acns.nwu.edu sun
  1301. X129.105.113.32    emma.acns.nwu.edu
  1302. X129.105.100.1    aristotle.ils.nwu.edu    blah
  1303. X129.105.5.103    delta.eecs.nwu.edu    bill
  1304. X129.105.5.15    avalon.eecs.nwu.edu    matt
  1305. X129.105.113.31    nestor.acns.nwu.edu nestor
  1306. X129.105.113.40    lenny.acns.nwu.edu    navarra
  1307. X129.105.113.42    speedy.acns.nwu.edu    navarra
  1308. X# Friendly hosts
  1309. X128.111.24.70    engrhub.ucsb.edu    harley
  1310. X128.210.24.1     sage.cc.purdue.edu pucc pucc    varney
  1311. X128.52.46.26    wombat.gnu.ai.mit.edu gnu    mage
  1312. X132.206.2.3    quiche.cs.mcgill.ca    archie
  1313. X128.167.254.179    archie.sura.net    archie
  1314. X147.225.1.31    archie.ans.net    archie
  1315. X# anonymous ftp sites
  1316. X137.39.1.9    ftp.uu.net    anonymous
  1317. X18.71.0.38    prep.ai.mit.edu    anonymous
  1318. X128.252.135.4    wuarchive.wustl.edu    anonymous 
  1319. END_OF_FILE
  1320. if test 728 -ne `wc -c <'sample_hostsfile'`; then
  1321.     echo shar: \"'sample_hostsfile'\" unpacked with wrong size!
  1322. fi
  1323. chmod +x 'sample_hostsfile'
  1324. # end of 'sample_hostsfile'
  1325. fi
  1326. echo shar: End of shell archive.
  1327. exit 0
  1328.