home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / base / root.15 / usr / lib / rlpconf / rlpconf~
Text File  |  1998-08-19  |  7KB  |  254 lines

  1. #!/bin/sh
  2. # The following was generated from 
  3. # NLS/english/rlp.gen
  4. #
  5. MF_RLP=rlp.cat
  6. #
  7. MS_RLP=1
  8. RLPM_FIRST_MSG=1
  9. RLPM_CFG_SIGNON=2
  10. RLPM_CFG_ENTERI=3
  11. RLPM_CFG_LNAME=4
  12. RLPM_CFG_ERR1A=5
  13. RLPM_CFG_ERR1B=6
  14. RLPM_CFG_RHOST=7
  15. RLPM_CFG_RNAME=8
  16. RLPM_CFG_PCONH=9
  17. RLPM_CFG_ROKAY=10
  18. RLPM_CFG_DEFLT=11
  19. RLPM_CFG_AGAIN=12
  20. RLPM_CFG_CONTIN=13
  21. RLPM_CFG_FADD=14
  22. RLPM_CFG_NDEFLT=15
  23. RLPM_CFG_ADDED=16
  24. RLPM_STAT_USAGE=17
  25. RLPM_STAT_NCONF=18
  26. RLPM_STAT_RSUBM=19
  27. RLPM_STAT_NUID=20
  28. RLPM_CMD_NUID=21
  29. RLPM_LAST_MSG=22
  30. #!/usr/bin/sh
  31.  
  32. # Copyright (c) 1998 The Santa Cruz Operation, Inc.. All Rights Reserved. 
  33. #                                                                         
  34. #        THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF THE               
  35. #                   SANTA CRUZ OPERATION INC.                             
  36. #                                                                         
  37. #   The copyright notice above does not evidence any actual or intended   
  38. #   publication of such source code.                                      
  39.  
  40. #    %c%
  41. #
  42. ##############################################################################
  43. #
  44. #     @(#)rlpconf.sh    1.2
  45. #
  46. # USAGE:  rlpconf<ret>
  47. #
  48. # DESCRIPTION:
  49. #     The rlpconf shell script allows printers to be configured that can be
  50. #     used by the rlp commands (rlpcmd, rlpstat and indirectly lp).
  51. #     The script prompts for the name of the local printer accepting remote
  52. #     print requests. It then prompts for the name of the remote host and the
  53. #     name of the printer on the remote host. It also prompts the user if the
  54. #     printer is to be the local default printer.
  55. #     The printers is then added locally (using lpadmin), and set to the
  56. #     default printer if requested. Finally the printer is added to the rlp
  57. #     remote printer file, which maps the local printer to the remote one
  58. #
  59. # REQUIREMENTS:
  60. #     Before rlp printing or the rlpstat and rlpcmd commands can be used a
  61. #     a .rhosts(SFF) file is needed in the remote machine's /usr/spool/lp
  62. #     directory with the following line:
  63. #          local_host_name    lp
  64. #
  65. # EFFECTS:
  66. #     Adding printers using this shell scripts, does the following:
  67. #      1. Adds a printer using the lpadmin command, with the following
  68. #         command line:
  69. #          lpadmin -p <localPrinter> -i /usr/lib/lp/model/network -v /dev/null
  70. #      2. If requestedi, sets the printer as the default printer using the
  71. #         lpadmin command with the following command line:
  72. #          lpadmin -d <localPrinter>
  73. #      3. Adds a line into the /usr/spool/lp/remote file to map the
  74. #         <localPrinter> onto the <remoteHost> and its <remotePrinter>. The
  75. #         line added is of the form:
  76. #          <localPrinter>: /usr/bin/rlpcmd <remoteHost> lp -d<remotePrinter>
  77. #
  78. # REMOVE:
  79. #     There is no command to remove the printers added by rlpconf, so rlp
  80. #     printers have to be deleted manually by the system administrator. Do the
  81. #     following to delete a rlp printer:
  82. #      1. use lpadmin to delete the printer, using command line:
  83. #          lpadmin -x <localPrinter>
  84. #      2. remove the entry for the printer in the /usr/spool/lp/remote file
  85. #         using a text editor (eg. vi), search for the line containing
  86. #         <localPrinter> and delete it.
  87. #
  88. ##############################################################################
  89.  
  90. PRINTERS=/usr/spool/lp/admins/lp/printers
  91. NETWORK=/usr/lib/lp/model/network
  92. NULLDEV=/dev/null
  93. REMOTE=/usr/spool/lp/remote
  94. RLPCMD=/usr/bin/rlpcmd
  95. LPCMD=/usr/bin/lp
  96. LPADMIN=/usr/lib/lpadmin
  97. LPSTAT=/usr/bin/lpstat
  98. LPENABLE=/usr/bin/enable
  99. LPACCEPT=/usr/lib/accept
  100.  
  101. LPRINTER=
  102. RPRINTER=
  103. HOST=
  104. DODEF=
  105.  
  106. add_rlp_printer()
  107. {
  108.    # Add the printer locally using lpadmin
  109.  
  110.    $LPADMIN -p $LPRINTER -i $NETWORK -v $NULLDEV
  111.    if [ $? != 0 ]
  112.    then
  113.      # failed to add printer, so ensure it has been fully deleted
  114.      #
  115.      $LPADMIN -x $LPRINTER >$NULLDEV 2>$NULLDEV
  116.      echo "ERROR: failed to add printer $LPRINTER"
  117.      exit 1
  118.    fi
  119.  
  120.    if [ $DODEF -eq 1 ]
  121.    then
  122.      # Set printer as the local default printer
  123.      #
  124.      $LPADMIN -d $LPRINTER
  125.      if [ $? != 0 ]
  126.      then
  127.        echo "WARNING: failed to set $LPRINTER as default"
  128.      fi
  129.    fi
  130.  
  131.    # Add printer to the rlp remote file
  132.    #
  133.  
  134.    if [ ! -f $REMOTE ]
  135.    then
  136.      >$REMOTE
  137.    fi
  138.  
  139.    chmod 644 $REMOTE >$NULLDEV 2>$NULLDEV
  140.    chown lp $REMOTE >$NULLDEV 2>$NULLDEV
  141.    chgrp lp $REMOTE >$NULLDEV 2>$NULLDEV
  142.  
  143.    echo "$LPRINTER: $RLPCMD $HOST $LPCMD -d$RPRINTER" >> $REMOTE
  144.  
  145.    if [ $? = 0 ]
  146.    then
  147.      echo ""
  148.      echo "rlp printer $LPRINTER added okay"
  149.    fi
  150.  
  151.    # Set printer to enabled and accepting print jobs (ignoring result)
  152.  
  153.    $LPENABLE $LPRINTER >$NULLDEV 2>$NULLDEV
  154.    $LPACCEPT $LPRINTER >$NULLDEV 2>$NULLDEV
  155. }
  156.  
  157. ##############################################################################
  158. #
  159. #  Main Part of shell script rlpconf
  160. #
  161. #  Get printer name and host name until user enters 'q'
  162. #
  163. ##############################################################################
  164.  
  165. while true; do
  166.   tput clear
  167.   echo "\t\t\tRemote rlp Printing Configuration\n"
  168.  
  169.   echo "Enter information for local printers accepting remote printing requests"
  170.   echo
  171.  
  172.   # Get the local printer name
  173.  
  174.   LPRINTER=
  175.   while [ X$LPRINTER = X ]; do
  176.     echo "Please enter the printer name (q to quit): \c"
  177.     read LPRINTER
  178.   done
  179.   if [ $LPRINTER = q ]; then
  180.     exit 0
  181.   else
  182.     if [ -d $PRINTERS/$LPRINTER ]
  183.     then
  184.       tput clear
  185.       echo "ERROR: printer $LPRINTER already exists on system"
  186.       echo "       using lpstat -p to display known printer names:"
  187.       echo ""
  188.       $LPSTAT -p 2>NULLDEV
  189.       exit 1
  190.     fi
  191.   fi
  192.  
  193.   while true; do
  194.     HOST=
  195.     while [ X$HOST = X ]; do
  196.       echo "\nPlease enter the the name of the remote host : \c"
  197.       read HOST
  198.     done
  199.  
  200.     # Get the remote printer name
  201.  
  202.     RPRINTER=
  203.     while [ X$RPRINTER = X ]; do
  204.       echo "Please enter the name of the printer on the remote host \c"
  205.       echo "(q to quit): \c"
  206.       read RPRINTER
  207.     done
  208.     if [ $RPRINTER = q ]; then
  209.       exit 0
  210.     fi
  211.  
  212.     echo "\n  Printer $RPRINTER is connected to host $HOST\n"
  213.     RESP=
  214.     while [ X$RESP = X ]; do
  215.       echo "Is this correct? (y/n) \c"
  216.       read RESP
  217.     done
  218.     if expr "$RESP" : "^[yY]">$NULLDEV 2>$NULLDEV; then
  219.       DODEF=0
  220.       echo "Would you like $LPRINTER to be the system default printer? \c"
  221.       echo "(y/n) [n]: \c"
  222.       read RESP
  223.       if [ X$RESP = X ]; then
  224.           RESP="n"
  225.       fi
  226.       if expr "$RESP" : "^[yY]">/dev/null 2>&1; then
  227.         DODEF=1
  228.       fi
  229.  
  230.       break 
  231.     else
  232.       echo "\n\tTry again? (y/n) \c"
  233.       read RESP
  234.       if [ X$RESP = X ]; then
  235.         RESP=y
  236.       fi
  237.       if expr "$RESP" : "^[yY]">$NULLDEV 2>$NULLDEV; then
  238.         echo
  239.       else
  240.         exit 1
  241.       fi
  242.     fi
  243.   done
  244.  
  245.   # Add the rlp printer
  246.  
  247.   add_rlp_printer $LPRINTER $RPRINTER $HOST $DODEF
  248.  
  249.   echo "\nPlease hit <return> to continue"
  250.   read x
  251. done
  252.  
  253. exit 0
  254.