More fixes
[einar-bin] / addfollowmeprint.sh
index 035767d74655e860fe0606b66f7bb70fae2387b5..8f0b2f981d0ab2c4cf6335e423e5fbffb6630344 100755 (executable)
@@ -1,5 +1,5 @@
 #!/bin/bash
 #!/bin/bash
-# This script installs the FollowMe print queue at NTNU on Linux (and possibly Mac) systems.
+# This script installs the FollowMe print queue at NTNU on Linux and possibly Mac systems.
 # The targeted and tested distros are: Debian, Ubuntu (and derivates), Fedora, CentOS, OpenSUSE and Mint
 # Copyright © 2017-2019 einar.haraldseid@ntnu.no
 
 # The targeted and tested distros are: Debian, Ubuntu (and derivates), Fedora, CentOS, OpenSUSE and Mint
 # Copyright © 2017-2019 einar.haraldseid@ntnu.no
 
@@ -8,7 +8,7 @@ function usage {
   echo "Usage: ./$(basename "${0}") [OPTIONS]"
   echo "Options:"
   echo " -m, --model {ricoh|generic}     Printer model to install (default: generic)"
   echo "Usage: ./$(basename "${0}") [OPTIONS]"
   echo "Options:"
   echo " -m, --model {ricoh|generic}     Printer model to install (default: generic)"
-  echo " -d, --driver {pcl,postscript}   Printer driver to use (default: postscript)"
+  echo " -d, --driver {pcl|postscript}   Printer driver to use (default: postscript)"
   echo " -f, --force                     Force running script as if on Linux systems"
   echo " -p, --plaintext                 Store credentials as plaintext in /etc/cups/printers.conf (Linux only)"
   echo " -h, --help                      Display this help text"
   echo " -f, --force                     Force running script as if on Linux systems"
   echo " -p, --plaintext                 Store credentials as plaintext in /etc/cups/printers.conf (Linux only)"
   echo " -h, --help                      Display this help text"
@@ -139,7 +139,7 @@ if [ "${Uname}" = "linux" ]; then
         if ! sudo rpm -q OpenPrintingPPDs-postscript >/dev/null 2>&1; then
           printerror "You don't seem to have the correct printer drivers installed, please run:"
           printerror "  sudo zypper install OpenPrintingPPDs-postscript"
         if ! sudo rpm -q OpenPrintingPPDs-postscript >/dev/null 2>&1; then
           printerror "You don't seem to have the correct printer drivers installed, please run:"
           printerror "  sudo zypper install OpenPrintingPPDs-postscript"
-          printerror "first, or use the generic driver instead."
+          printerror "first, or use the generic model instead."
           exit 1
         else
           DriverPath="OpenPrintingPPDs/postscript/Ricoh-MP_C6003.Postscript-Ricoh.ppd.gz"
           exit 1
         else
           DriverPath="OpenPrintingPPDs/postscript/Ricoh-MP_C6003.Postscript-Ricoh.ppd.gz"
@@ -151,7 +151,7 @@ if [ "${Uname}" = "linux" ]; then
       if ! sudo rpm -q OpenPrintingPPDs-ghostscript >/dev/null 2>&1; then
         printerror "You don't seem to have the correct printer drivers installed, please run:"
         printerror "  sudo zypper install OpenPrintingPPDs-ghostscript"
       if ! sudo rpm -q OpenPrintingPPDs-ghostscript >/dev/null 2>&1; then
         printerror "You don't seem to have the correct printer drivers installed, please run:"
         printerror "  sudo zypper install OpenPrintingPPDs-ghostscript"
-        printerror "first, or use the generic driver instead."
+        printerror "first, or use the generic model instead."
         exit 1
       else
         if [ "${Model}" = "ricoh" ]; then
         exit 1
       else
         if [ "${Model}" = "ricoh" ]; then
@@ -166,10 +166,10 @@ if [ "${Uname}" = "linux" ]; then
     if [ "${Model}" = "ricoh" ]; then
       # This should match Fedora and other modern rpm based systems that have dnf as the primary package manager
       if command -v dnf >/dev/null 2>&1; then
     if [ "${Model}" = "ricoh" ]; then
       # This should match Fedora and other modern rpm based systems that have dnf as the primary package manager
       if command -v dnf >/dev/null 2>&1; then
-        if ! sudo rpm -q foomatic-db-ppds 2>&1; then
+        if ! sudo rpm -q foomatic-db-ppds > /dev/null 2>&1; then
           printerror "You don't seem to have the correct printer drivers installed, please run:"
           printerror "  sudo dnf install foomatic-db-ppds"
           printerror "You don't seem to have the correct printer drivers installed, please run:"
           printerror "  sudo dnf install foomatic-db-ppds"
-          printerror "first, or use the generic driver instead."
+          printerror "first, or use the generic model instead."
           exit 1
         else
           if [ "${Driver}" = "postscript" ]; then
           exit 1
         else
           if [ "${Driver}" = "postscript" ]; then
@@ -178,13 +178,18 @@ if [ "${Uname}" = "linux" ]; then
             DriverPath="foomatic-db-ppds/Ricoh/PXL/Ricoh-MP_C6003_PXL.ppd.gz"
           fi
         fi
             DriverPath="foomatic-db-ppds/Ricoh/PXL/Ricoh-MP_C6003_PXL.ppd.gz"
           fi
         fi
-      fi
       # This should match CentOS, RHEL and other RHEL based distros that have yum as the primary package manager
       # This should match CentOS, RHEL and other RHEL based distros that have yum as the primary package manager
-      if command -v yum >/dev/null 2>&1; then
-        if ! sudo rpm -q foomatic-db-ppds >/dev/null 2>&1; then
+      elif command -v yum >/dev/null 2>&1; then
+        if ! sudo rpm -q foomatic-filters > /dev/null 2>&1; then
+          printerror "You don't seem to have the foomatic-filters package installed, please run:"
+          printerror "  sudo yum install foomatic-filters"
+          printerror "first, or use the generic model instead."
+          exit 1
+        fi
+        if ! sudo rpm -q foomatic-db-ppds > /dev/null 2>&1; then
           printerror "You don't seem to have the correct printer drivers installed, please run:"
           printerror "  sudo yum install foomatic-db-ppds"
           printerror "You don't seem to have the correct printer drivers installed, please run:"
           printerror "  sudo yum install foomatic-db-ppds"
-          printerror "first, or use the generic driver instead."
+          printerror "first, or use the generic model instead."
           exit 1
         else
           if [ "${Driver}" = "postscript" ]; then
           exit 1
         else
           if [ "${Driver}" = "postscript" ]; then
@@ -199,7 +204,7 @@ if [ "${Uname}" = "linux" ]; then
         if ! sudo dpkg -s openprinting-ppds > /dev/null 2>&1; then
           printerror "You must have the correct printer drivers installed, please run:"
           printerror "  sudo apt-get install openprinting-ppds"
         if ! sudo dpkg -s openprinting-ppds > /dev/null 2>&1; then
           printerror "You must have the correct printer drivers installed, please run:"
           printerror "  sudo apt-get install openprinting-ppds"
-          printerror "first, or use the generic driver instead."
+          printerror "first, or use the generic model instead."
           exit 1
         else 
           if [ "${Driver}" = "postscript" ]; then
           exit 1
         else 
           if [ "${Driver}" = "postscript" ]; then
@@ -252,7 +257,7 @@ if [ "${Uname}" = "darwin" ]; then
   fi
   ShareFound=$(smbutil view "//${Workgroup};${Username}:${Password}@${PrintServer}" 2>/dev/null | grep ${PrintFile} | cut -d " " -f 1)
   if [ "${ShareFound}" != "${PrintFile}" ]; then
   fi
   ShareFound=$(smbutil view "//${Workgroup};${Username}:${Password}@${PrintServer}" 2>/dev/null | grep ${PrintFile} | cut -d " " -f 1)
   if [ "${ShareFound}" != "${PrintFile}" ]; then
-    printerror "Could not find printer share called ${PrintFile} on the server" 
+    printerror "Could not find printer share called ${PrintFile} on the server"
     printerror "This script must be broken or outdated. Please contact orakel@ntnu.no for further assistance."
     exit 1
   fi
     printerror "This script must be broken or outdated. Please contact orakel@ntnu.no for further assistance."
     exit 1
   fi
@@ -270,6 +275,7 @@ if [ "${Uname}" = "linux" ]; then
   else
     PrinterShare="smb://${Workgroup}/${PrintServer}/${PrintFile}"
     AuthInfo="username,password"
   else
     PrinterShare="smb://${Workgroup}/${PrintServer}/${PrintFile}"
     AuthInfo="username,password"
+    echo -e "\nNOTE: Due to the way credentials are stored and accessed on Linux, some print operations will still halt for credentials, notably the \"Print test page\" function and printing from LibreOffice. In those cases, supply your normal NTNU username and password. If this becomes too tedious, you can try using the --plaintext option.\n"
   fi
   if ! sudo lpadmin  -p ${QueueName} \
    -D "FollowMe print queue at NTNU" \
   fi
   if ! sudo lpadmin  -p ${QueueName} \
    -D "FollowMe print queue at NTNU" \
@@ -331,4 +337,4 @@ if ! sudo lpadmin -d ${QueueName}; then
   exit 1
 fi
 
   exit 1
 fi
 
-echo "Printer successfully installed. You may need to restart cups for the changes to take effect."
+echo "Printer successfully installed."