######################################################################
## Here an example calling sequence
-##!/bin/sh
+##!/bin/sh
## set -x
## source VampireDriversFunctions
##
## fetchenumdrivers3listfromNThost # repeat, if no success at first
-## createdrivernamelist
+## createdrivernamelist
## createprinterlistwithUNCnames # repeat, if no success at first
## createmapofprinterstodriver
## splitenumdrivers3list
{
echo -e " \n\
############################################################################
-#
+#
# About the \"Vampire Printer Drivers\" set of functions....
# --------------------------------------------------------
#
#
# ------------------------------------------------------------
#
-# Version: 0.8 (largely \"self-documented\" now, but not yet
+# Version: 0.8 (largely \"self-documented\" now, but not yet
# completely -- if it ever will be....)
#
# Thanks a lot to Fabian Franz for helping me with some important
# driver. Also, driver versions \"0\", \"2\" and \"3\" are placed in
# further subdirectories.
#
-#
-# Known problems:
-# ---------------
-#
-# 1) I found one printer driver containing a \"slash\" which is not
-# handled by this script: \"HP Color LaserJet 5/5M PS\". (There
-# are more of these in the wild, of course.) -- The reason: I
+#
+# Known problems:
+# ---------------
+#
+# 1) I found one printer driver containing a \"slash\" which is not
+# handled by this script: \"HP Color LaserJet 5/5M PS\". (There
+# are more of these in the wild, of course.) -- The reason: I
# didn't find a way to create a Unix directory containing a \"slash\".
# UPDATE: The script replaces the \"/\" with a \"_\" and also renames
-# the drivername accordingly, when it is uploaded to the Samba
+# the drivername accordingly, when it is uploaded to the Samba
# [print$] share....
-#
-# 2) There is an unsolved problem in case a real file name deviates
-# in its case sensitive spelling from how it is displayed by the
-# \"rpcclient enumdrivers\" command. I encountered cases where
-# rpcclient displayed \"PS5UI.DLL\" as a file name, but \"smbclient
-# mget\" retrieved \"ps5ui.dll\" from the NT printserver, and the
-# driverinstallation failed because \"smbclient mput\" tried to put
+#
+# 2) There is an unsolved problem in case a real file name deviates
+# in its case sensitive spelling from how it is displayed by the
+# \"rpcclient enumdrivers\" command. I encountered cases where
+# rpcclient displayed \"PS5UI.DLL\" as a file name, but \"smbclient
+# mget\" retrieved \"ps5ui.dll\" from the NT printserver, and the
+# driverinstallation failed because \"smbclient mput\" tried to put
# \"PS5UI.DLL\" back onto the Samba server where UNIX only had
# \"ps5ui.dll\" available (which of course failed). -- UPDATE: this
-# is now solved. All files are renamed now to the same
-# case-sensitive spelling as \"rpcclient ... enumdrivers 3\"
+# is now solved. All files are renamed now to the same
+# case-sensitive spelling as \"rpcclient ... enumdrivers 3\"
# announces. This includes renaming into both, uppercase or
# lowercase, as the case might be....
-#
+#
# 3) This script is probably not portable at all and relies on lots
# of Bash-isms.
-#
+#
# 4) This script runs with rpcclient from Samba-3.0.2a (or later) only
# (because it uses the \"Version\" parameter for \"adddriver\").
#
# The following functions use a few external variables to log
-# into the 2 hosts. We suggest that you create a file which
+# into the 2 hosts. We suggest that you create a file which
# contains the variables and that you source that file at the
-# beginning of this script...
-#
+# beginning of this script...
+#
# #################################################################
#
-# ntprinteradmin=Administrator # any account on the NT host
+# ntprinteradmin=Administrator # any account on the NT host
# # with SePrintOperatorPrivilege privileges
# ntadminpasswd=not4you # the printer admin password on
# # the NT print server
-# nthost=windowsntprintserverbox # the netbios name of the NT print
+# nthost=windowsntprintserverbox # the netbios name of the NT print
# # server
-#
-# smbprinteradmin=knoppix # an account on the Samba server
+#
+# smbprinteradmin=knoppix # an account on the Samba server
# # with SePrintOperatorPrivilege privileges
# smbadminpasswd=2secret4you # the printer admin password on
# # the Samba server
-# smbhost=knoppix # the netbios name of the Samba
+# smbhost=knoppix # the netbios name of the Samba
# # print server
#
# #################################################################
#
-#
-# NOTE: these functions also work for 2 NT print servers: snatch all
-# drivers from the first, and upload them to the second server (which
-# takes the role of the \"Samba\" server). Of course they also work
-# for 2 Samba servers: snatch all drivers from the first (which takes
+#
+# NOTE: these functions also work for 2 NT print servers: snatch all
+# drivers from the first, and upload them to the second server (which
+# takes the role of the \"Samba\" server). Of course they also work
+# for 2 Samba servers: snatch all drivers from the first (which takes
# the role of the NT print server) and upload them to the second....
-#
-#
+#
+#
# ............PRESS \"q\" TO QUIT............" \
|less
}
echo "--> Running now function enumallfunctions()..."
echo "=============================================="
echo -e " \n\
-
- NOTE: run the listed functions in the same order as listed below.
-
+
+ NOTE: run the listed functions in the same order as listed below.
+
EXAMPLE: \"knoppix@ttyp6[knoppix]$ helpwithvampiredrivers\"
-
+
HELP: the \"--help\" parameter prints usage hints regarding a function.
-
- EXAMPLE: \"knoppix@ttyp6[knoppix]$ fetchenumdrivers3listfromNThost --help\"
-
+ EXAMPLE: \"knoppix@ttyp6[knoppix]$ fetchenumdrivers3listfromNThost --help\"
+
+
function vampiredrivers_readme()
- function enumallfunctions()
+ function enumallfunctions()
function helpwithvampiredrivers()
function fetchenumdrivers3listfromNThost() # repeat, if no success at first
- function createdrivernamelist()
+ function createdrivernamelist()
function createprinterlistwithUNCnames() # repeat, if no success at first
- function createmapofprinterstodrivers()
+ function createmapofprinterstodrivers()
function splitenumdrivers3list()
function makesubdirsforW32X86driverlist()
function splitW32X86fileintoindividualdriverfiles()
# this is a helperfunction (Thanks to Fabian Franz!)
function stringinstring()
{
- case "$2" in *$1*)
- return 0
+ case "$2" in *$1*)
+ return 0
;;
- esac
+ esac
return 1
}
{
echo -e " \n\
################################################################################
-#
+#
# About fetchenumdrivers3listfromNThost()....
# -------------------------------------------
#
-# PRECONDITIONS: 1) This function expects write access to the current directory.
-# 2) This function expects to have the '\$nthosts',
-# '\$ntprinteradmin' and '\$ntadminpasswd' variables set to
+# PRECONDITIONS: 1) This function expects write access to the current directory.
+# 2) This function expects to have the '\$nthosts',
+# '\$ntprinteradmin' and '\$ntadminpasswd' variables set to
# according values.
#
# WHAT IT DOES: This function connects to the '\$nthost' (using the credentials
-# '\$ntprinteradmin' with '\$ntadminpasswd', retrieves a list of
+# '\$ntprinteradmin' with '\$ntadminpasswd', retrieves a list of
# drivers (with related file names) from that host, and saves the
# list under the name of '\${nthost}/enumdrivers3list.txt' (ie. it
# also creates the '\$nthost' subdirectory in the current one). It
#
# IF IT DOESN'T WORK: It may happen that the function doesn't work at the first
# time (there may be a connection problem). Just repeat a
-# few times. It may work then. You will recognize if it
+# few times. It may work then. You will recognize if it
# does.
#
# HINT: The current values: 'nthost'=\"$nthost\"
# 'ntprinteradmin'=\"$ntprinteradmin\"
# 'ntadminpasswd'=<not shown here, check yourself!>
-#
+#
################################################################################"
echo " "
}
| sed -e '/^.*Driver Name: \[.*\]/ y/\//_/' \
| tee \
${nthost}/enumdrivers3list.txt;
-
+
NUMBEROFDIFFERENTDRIVERNAMES=$( grep "Driver Name:" ${nthost}/enumdrivers3list.txt \
| sort -f \
| uniq \
{
echo -e " \n\
################################################################################
-#
+#
# About createdrivernamelist()...
# -------------------------------
#
-# PRECONDITIONS: 1) This function expects to find the subdirectory '\$nthost'
+# PRECONDITIONS: 1) This function expects to find the subdirectory '\$nthost'
# and the file '\${nthost}/enumdrivers3list.txt' to exist.
-# 2) This function expects to have the '\$nthosts' variable set
+# 2) This function expects to have the '\$nthosts' variable set
# to an according value.
#
-# WHAT IT DOES: This function dissects the '\${nthost}/enumdrivers3list.txt'
+# WHAT IT DOES: This function dissects the '\${nthost}/enumdrivers3list.txt'
# and creates other textfiles from its contents:
# - '\${nthost}/drvrlst.txt'
# - '\${nthost}/completedriverlist.txt'
# and further prints some more info to stdout.
#
# HINT: The current value: 'nthost'=\"$nthost\"
-#
+#
################################################################################"
}
| tee \
${nthost}/drvrlst.txt;
drvrlst=$(echo ${nthost}/drvrlst.txt);
-
+
cat ${nthost}/enumdrivers3list.txt \
| grep "Driver Name:" \
| awk -F "[" '{ print $2 }' \
| sed -e 's/^ */DRIVERNAME/' -e 's/\t/\="/' \
| tee \
${nthost}/completedriverlist.txt;
-
+
NUMBEROFDRIVERS=`cat ${nthost}/completedriverlist.txt| wc -l`;
echo " ";
echo "--> Finished in running function createdrivernamelist....";
{
echo -e " \n\
################################################################################
-#
+#
# About createprinterlistwithUNCnames()...
# ----------------------------------------
#
-# PRECONDITIONS: 1) This function expects write access to the current directory.
-# 2) This function expects to have the '\$nthost',
+# PRECONDITIONS: 1) This function expects write access to the current directory.
+# 2) This function expects to have the '\$nthost',
# '\$ntprinteradmin' and '\$ntadminpasswd' variables set to
# according values.
#
# printqueues (with associated driver names) from that host (with
# the help of the 'rpcclient ... enumprinters' utility, and saves
# it under name and path '\${nthost}/printerlistwithUNCnames.txt'
-# (ie. it also creates the '\$nthost' subdirectory in the current
+# (ie. it also creates the '\$nthost' subdirectory in the current
# one). It further prints some more info to stdout.
#
# IF IT DOESN'T WORK: It may happen that the function doesn't work at the first
# HINT: The current values: 'nthost'=\"$nthost\"
# 'ntprinteradmin'=\"$ntprinteradmin\"
# 'ntadminpasswd'=<not shown here, check yourself!>
-#
+#
################################################################################"
}
{
echo -e " \n\
################################################################################
-#
+#
# About createmapofprinterdrivers()...
# ------------------------------------
#
# PRECONDITIONS: 1) This function expects to find a subdirectory '\$nthost' and
# the file '\${nthost}/printerlistwithUNCnames.txt' to exist.
-# 2) This functions expects to have the '\$nthosts' variable set
+# 2) This functions expects to have the '\$nthosts' variable set
# to an according value.
#
-# WHAT IT DOES: This function dissects '\${nthost}/printerlistwithUNCnames.txt'
+# WHAT IT DOES: This function dissects '\${nthost}/printerlistwithUNCnames.txt'
# and creates some other textfiles from its contents:
# - '\${nthost}/allprinternames.txt'
# - '\${nthost}/alldrivernames.txt'
# - '${nthost}/allnonrawprinters.txt'
# - '${nthost}/allrawprinters.txt'
# - '${nthost}/printertodrivermap.txt'
-#
+#
################################################################################"
}
| sort -f \
| uniq \
| tee \
- ${nthost}/allprinternames.txt;
-
+ ${nthost}/allprinternames.txt;
+
echo " "
echo " "
echo "ALL non-RAW PRINTERS:"
| sort -f \
| uniq \
| tee \
- ${nthost}/allnonrawprinters.txt;
-
+ ${nthost}/allnonrawprinters.txt;
+
echo " "
echo " "
echo "ALL RAW PRINTERS:"
| sort -f \
| uniq \
| tee \
- ${nthost}/allrawprinters.txt;
-
+ ${nthost}/allrawprinters.txt;
+
echo " "
echo " "
echo "THE DRIVERNAMES:"
| awk -F "," '{ print "\"" $1 "\":\"" $2 "\"" }' \
| grep -v ":\"\"$" \
| tee \
- ${nthost}/printertodrivermap.txt
+ ${nthost}/printertodrivermap.txt
echo -e "##########################\n# printer:driver #" >> ${nthost}/printertodrivermap.txt
fi
}
{
echo -e " \n\
################################################################################
-#
+#
# About getdrivernamelist()...
# ----------------------------
#
# and also prints it to <stdout>. To do so, it must contact the
# '\$nthost' via rpcclient (which in turn needs '\$ntprinteradmin'
# '\$ntadminpasswd' to log in....).
-#
+#
# HINT: The current values: 'nthost'=\"$nthost\"
# 'ntprinteradmin'=\"$ntprinteradmin\"
# 'ntadminpasswd'=<not shown here, check yourself!>
# which resolves above mentioned path to:
# - '${nthost}/printernamelist.txt'
-#
+#
################################################################################"
}
{
echo -e " \n\
################################################################################
-#
+#
# About splitenumdrivers3list()...
# --------------------------------
#
# PRECONDITIONS: 1) This function expects write access to the current directory
-# and its subdirs '\$nthost/*'.
+# and its subdirs '\$nthost/*'.
# 2) This function expects to have the '\$nthost' variable set to
# the according value.
-#
-# WHAT IT DOES: This function dissects the '\$nthost/enumdrivers3list.txt'
+#
+# WHAT IT DOES: This function dissects the '\$nthost/enumdrivers3list.txt'
# (using "sed", "cat", "awk" and "grep"). It splits the list up
# into two different files representing a complete list of drivers
-# and files for each of the 2 supported architectures. It creates
+# and files for each of the 2 supported architectures. It creates
# '\${nthost}/W32X86/${nthost}-enumdrivers3list-NTx86.txt'
# and '\${nthost}/WIN40/${nthost}-enumdrivers3list-WIN40.txt'.
-#
-# IF IT DOESN'T WORK: The function "fetchenumdrivers3listfromNThost" may not
+#
+# IF IT DOESN'T WORK: The function "fetchenumdrivers3listfromNThost" may not
# have been run successfully. This is a precondition for
# the current function.
#
-# HINT: You currently have defined: 'nthost'=\"$nthost\", which resolves above
+# HINT: You currently have defined: 'nthost'=\"$nthost\", which resolves above
# mentioned paths to:
# - '${nthost}/WIN40/${nthost}-enumdrivers3list-NTx86.txt'
# - '${nthost}/W32X86/${nthost}-enumdrivers3list-NTx86.txt'
echo " "
echo "--> Running now function splitenumdrivers3list()...."
echo "===================================================="
-
+
[ -d ${nthost}/WIN40 ] || mkdir -p ${nthost}/WIN40;
[ -d ${nthost}/W32X86 ] || mkdir -p ${nthost}/W32X86;
-
+
cat ${nthost}/enumdrivers3list.txt \
| sed -e '/^\[Windows NT x86\]/,$ d' \
| tee \
${nthost}/WIN40/${nthost}-enumdrivers3list-WIN40.txt ;
-
+
cat ${nthost}/WIN40/${nthost}-enumdrivers3list-WIN40.txt \
| grep Version \
| sort -f \
# cd ${nthost}/WIN40/ ;
# mkdir $( cat availableversionsWIN40.txt ) 2> /dev/null ;
# cd - ;
-
+
cat ${nthost}/enumdrivers3list.txt \
| sed -e '/^\[Windows NT x86\]/,$! d' \
| tee \
${nthost}/W32X86/${nthost}-enumdrivers3list-NTx86.txt ;
-
+
cat ${nthost}/W32X86/${nthost}-enumdrivers3list-NTx86.txt \
| grep Version \
| sort -f \
{
echo -e " \n\
################################################################################
-#
+#
# About makesubdirsforWIN40driverlist() and makesubdirsforWIN40driverlist ()...
# -----------------------------------------------------------------------------
#
# PRECONDITIONS: 1) These functions expect write access to the current directory
-# 2) These functions expect to have the '\$nthost' variable set
+# 2) These functions expect to have the '\$nthost' variable set
# to the according value.
# 3) These functions expect to find the two files
# '\${nthost}/WIN40/\${nthost}-enumdrivers3list-WIN40.txt' and
# '\${nthost}/W32X86/\${nthost}-enumdrivers3list-NTx86.txt' to
# work on.
#
-# WHAT IT DOES: These functions dissect the '$nthost/enumdrivers3list.txt'
-# (using "sed", "cat", "awk" and "grep"). They split the input
+# WHAT IT DOES: These functions dissect the '$nthost/enumdrivers3list.txt'
+# (using "sed", "cat", "awk" and "grep"). They split the input
# files up into individual files representing driver(version)s and
-# create appropriate subdirectories for each driver and version
+# create appropriate subdirectories for each driver and version
# underneath './\$nthost/<architecture>'. They use the drivernames
-# (including spaces) for the directory names. ("/" -- slashes --
+# (including spaces) for the directory names. ("/" -- slashes --
# in drivernames are converted to underscores).
#
-# IF IT DOESN'T WORK: The function "fetchenumdrivers3listfromNThost" and
+# IF IT DOESN'T WORK: The function "fetchenumdrivers3listfromNThost" and
# consecutive ones may not have been run successfully. This
# is a precondition for the current function.
#
# mentioned paths to:
# - '\${nthost}/WIN40/\${nthost}-enumdrivers3list-NTx86.txt'
# - '\${nthost}/W32X86/\${nthost}-enumdrivers3list-NTx86.txt'
-#
+#
################################################################################
# ............PRESS \"q\" TO QUIT............" \
|less
-}
+}
# -----------------------------------------------------------------------------
function makesubdirsforWIN40driverlist()
-{
+{
if stringinstring help $@ ; then
helpwithmakesubdirsforWIN40driverlist ;
else
| sed -e 's/^/mkdir -p '"\"${nthost}"'\/WIN40\//' \
| tee \
${nthost}/makesubdirsforWIN40driverlist.txt;
-
+
sh -x ${nthost}/makesubdirsforWIN40driverlist.txt;
# rm ${nthost}/makesubdirsforWIN40driverlist.txt;
#
function makesubdirsforW32X86driverlist()
-{
+{
if stringinstring help $@ ; then
helpwithvampiredrivers ;
else
| sed -e 's/^ */mkdir '\""${nthost}"'\/W32X86\//' \
| tee \
${nthost}/makesubdirsforW32X86driverlist.txt;
-
+
sh -x ${nthost}/makesubdirsforW32X86driverlist.txt;
# rm ${nthost}/makesubdirsforW32X86driverlist.txt;
{
echo -e " \n\
################################################################################
-#
-# About splitWIN40fileintoindividualdriverfiles() and
+#
+# About splitWIN40fileintoindividualdriverfiles() and
# splitW32X86fileintoindividualdriverfiles()...
# ---------------------------------------------------
#
# PRECONDITIONS: 1) These functions expect write access to the current directory
-# and its subdirs '\$nthost/*/'.
+# and its subdirs '\$nthost/*/'.
# 2) These functions expect to have the '\$nthost' variable set
# to the according value.
# 3) These functions expect to find the two files
# '\${nthost}/W32X86/\${nthost}-enumdrivers3list-NTx86.txt' to
# work on.
#
-# WHAT IT DOES: 1) These functions create a directory for each printer driver.
-# The directory name is identical to the driver name.
+# WHAT IT DOES: 1) These functions create a directory for each printer driver.
+# The directory name is identical to the driver name.
# 2) For each supported driver version (\"0\", \"2\" and \"3\") it
-# creates a subdirectory as required underneath
-# './\$nthost/<architecture>'.
-# 3) The directories use the drivernames (including spaces) for
+# creates a subdirectory as required underneath
+# './\$nthost/<architecture>'.
+# 3) The directories use the drivernames (including spaces) for
# their names. ("/" - slashes - in drivernames are converted to
# underscores).
-# 4) In each subdirectory they dissect the original
-# '\$nthost/enumdrivers3list.txt' (using "sed", "cat", "awk"
+# 4) In each subdirectory they dissect the original
+# '\$nthost/enumdrivers3list.txt' (using "sed", "cat", "awk"
# and "grep") and store that part describing the related driver
-# (under the name \"driverfilesversion.txt\".
-# 5) For each driver the files \"Drivername\", \"DriverPath\",
+# (under the name \"driverfilesversion.txt\".
+# 5) For each driver the files \"Drivername\", \"DriverPath\",
# \"Drivername\", \"Configfile\", \"Helpfile\", \"AllFiles\" and
# \"Dependentfilelist\" are stored in the according directory
-# which hold contend that is used by other (downstream)
+# which hold contend that is used by other (downstream)
# functions.
-# 6) It creates a file named \"AllFilesIAskFor\" which holds the
-# case sensitive names of files it wanted to download. It also
-# creates a file named \"AllFilesIGot\" which holds the case
-# sensitive spelling of the downloaded files. (Due to
-# Microsoft's ingenious file naming tradition, you may have
+# 6) It creates a file named \"AllFilesIAskFor\" which holds the
+# case sensitive names of files it wanted to download. It also
+# creates a file named \"AllFilesIGot\" which holds the case
+# sensitive spelling of the downloaded files. (Due to
+# Microsoft's ingenious file naming tradition, you may have
# asked for a \"PS5UI.DLL\" but gotten a \"ps5ui.dll\".
# 7) The 2 files from 6) will be later compared with the help of
# the \"sdiff\" utility to decide how to re-name the files so
-# that the subsequent driver upload command's spelling
+# that the subsequent driver upload command's spelling
# convention is met.
#
-# IF IT DOESN'T WORK: The function \"fetchenumdrivers3listfromNThost\" and
+# IF IT DOESN'T WORK: The function \"fetchenumdrivers3listfromNThost\" and
# consecutive ones may not have been run successfully. This
# is a precondition for the current function.
#
# HINT: You currently have defined: 'nthost'=\"$nthost\".
-#
+#
################################################################################
# ............PRESS \"q\" TO QUIT............" \
|less
-}
+}
# -----------------------------------------------------------------------------
echo " "
echo "--> Running now function splitWIN40fileintoindividualdriverfiles()..."
echo "====================================================================="
-
+
for i in ${nthost}/WIN40/*/; do
CWD1="$( pwd )" ;
cd "${i}" ;
cat ${nthost}-enumdrivers3list-WIN40.lnk \
| sed -e '/\['"$(basename "$(echo "$PWD")")"'\]/,/Monitor/ w alldriverfiles.txt' -n ;
- for i in */; do
+ for i in */; do
CWD2="$( pwd )" ;
cd "${i}";
echo "yes" | cp ../alldriverfiles.txt . 2> /dev/null ;
echo "${Dependentfiles}" \
| tee Dependentfiles
- AllFiles=$( echo ${Dependentfilelist}; echo ${Helpfile}; echo ${Configfile}; echo ${Datafile}; echo ${DriverPath} );
-
+ AllFiles=$( echo ${Dependentfilelist}; echo ${Helpfile}; echo ${Configfile}; echo ${Datafile}; echo ${DriverPath} );
+
echo "${AllFiles}" \
| sort -f \
| uniq \
echo " "
echo "--> Running now function splitW32X86fileintoindividualdriverfiles()..."
echo "======================================================================"
-
+
for i in ${nthost}/W32X86/*/; do
CWD1="$( pwd )" ;
cd "${i}" ;
cat ${nthost}-enumdrivers3list-NTx86.lnk \
| sed -e '/\['"$(basename "$(echo "$PWD")")"'\]/,/Monitor/ w alldriverfiles.txt' -n ;
- for i in */; do
+ for i in */; do
CWD2="$( pwd )" ;
cd "${i}";
echo "yes" | cp ../alldriverfiles.txt . 2> /dev/null ;
Dependentfiles=$( echo $Dependentfilelist \
| sed -e 's/ /,/g ' ) ;
-
+
echo "${Dependentfiles}" \
| tee Dependentfiles
AllFiles=$( echo ${Dependentfilelist}; echo ${Helpfile}; echo ${Configfile}; echo ${Datafile}; echo ${DriverPath} ) ;
-
+
echo "${AllFiles}" \
| sort -f \
| uniq \
{
echo -e " \n\
################################################################################
-#
+#
# About fetchallW32X86driverfiles()...
# ------------------------------------
#
# PRECONDITIONS: 1) This function expects to have the \'\$nthost\' variable set
# to the according value.
-# 2) This function expects to find files \"AllFiles\",
-# \"AllFilesIAskFor\", and \"AllFilesIGot\" in the directories
-# \'\${nthost}/<architecture>/<drivername>/<version>/\'.
-#
-# WHAT IT DOES: These functions use \"smbclient\" to connect to the NT print
-# server \"\$nthost\" and download the printer driver files from
-# there. To achieve that in an orderly fashion, the previously
-# created subdirectories (named like the drivers to fetch) are
-# visited in turn and the related files are downloaded for each
+# 2) This function expects to find files \"AllFiles\",
+# \"AllFilesIAskFor\", and \"AllFilesIGot\" in the directories
+# \'\${nthost}/<architecture>/<drivername>/<version>/\'.
+#
+# WHAT IT DOES: These functions use \"smbclient\" to connect to the NT print
+# server \"\$nthost\" and download the printer driver files from
+# there. To achieve that in an orderly fashion, the previously
+# created subdirectories (named like the drivers to fetch) are
+# visited in turn and the related files are downloaded for each
# driver/directory.
#
-# IF IT DOESN'T WORK: The function \"fetchenumdrivers3listfromNThost\" and
+# IF IT DOESN'T WORK: The function \"fetchenumdrivers3listfromNThost\" and
# consecutive ones may not have been run successfully. This
# is a precondition for the current function.
-#
+#
# HINT: The current values: 'nthost'=\"$nthost\"
# 'ntprinteradmin'=\"$ntprinteradmin\"
# 'ntadminpasswd'=<not shown here, check yourself!>
-#
+#
################################################################################"
-}
+}
# -----------------------------------------------------------------------------
CURRENTWD=${PWD} ;
for i in ${nthost}/W32X86/*/*/ ; do \
- cd "${i}";
-
+ cd "${i}";
+
driverversion="$(basename "$(echo "$PWD")")" ;
echo "$(basename "$(echo "$PWD")")" > driverversion ;
-
+
AllFiles=$( cat AllFiles ) ;
-
- [ -d TheFiles ] || mkdir TheFiles;
-
+
+ [ -d TheFiles ] || mkdir TheFiles;
+
cd TheFiles;
-
+
echo " "
echo "===================================================="
echo "Downloading files now to ${PWD}....";
echo "===================================================="
echo " "
-
+
# Fetch the Driver files from the Windoze box (printserver)
smbclient -U"${ntprinteradmin}%${ntadminpasswd}" -d 2 \
//${nthost}/print\$ -c \
{
echo -e " \n\
################################################################################
-#
+#
# About uploadallW32X86drivers()...
# ---------------------------------
#
-# PRECONDITIONS: 1) This function expects to have the '\$nthost',
+# PRECONDITIONS: 1) This function expects to have the '\$nthost',
# '\$ntprinteradmin' and '\$ntadminpasswd' variables set to
# according values.
# 2) This function expects to find the files \"AllFiles\",
-# \"AllFilesIGot\" and \"AllFilesIAskFor\" in the
+# \"AllFilesIGot\" and \"AllFilesIAskFor\" in the
# \"\${nthost}/W32X86<drivername>/<driverversion>/TheFiles\"
# subdirectory.
#
# \"[print\$]\" share there. To achieve that in orderly fashion,
# the previously created subdirectories (named like the drivers
# fetched previously from \$smbhost) are visited in turn and the
-# related files are uploaded for each driver/directory. For this
+# related files are uploaded for each driver/directory. For this
# to really succeed, the files \"AllFilesIGot\" and \"AllFilesIAskFor\"
# are compared with the help of the \"sdiff\" utility to decide
-# how to re-name the mis-matching filenams, so that the used
+# how to re-name the mis-matching filenams, so that the used
# driver upload command's spelling convention is met....
#
-# IF IT DOESN'T WORK: The function "fetchenumdrivers3listfromNThost" and
+# IF IT DOESN'T WORK: The function "fetchenumdrivers3listfromNThost" and
# consecutive ones may not have been run successfully. This
# is a precondition for the current function.
-#
+#
# HINT: The current values: 'nthost'=\"$nthost\"
# 'ntprinteradmin'=\"$ntprinteradmin\"
# 'ntadminpasswd'=<not shown here, check yourself!>
-#
+#
################################################################################
# ............PRESS \"q\" TO QUIT............" \
|less
-}
+}
# -----------------------------------------------------------------------------
echo " "
echo "--> Running now function uploadallW32X86drivers()...."
echo "====================================================="
-
+
for i in ${nthost}/W32X86/*/*/; do \
CURRENTWD=${PWD} ;
cd "${i}" ;
- # we are now in [..]/W32X86/[drvrname]/[2|3]/
-
+ # we are now in [..]/W32X86/[drvrname]/[2|3]/
+
driverversion="$(basename "$(echo "$PWD")")" ;
echo "$(basename "$(echo "$PWD")")" > driverversion ;
echo "===================================================="
echo " "
set -x ;
-
+
smbclient -U"${smbprinteradmin}%${smbadminpasswd}" -d 2 \
//${smbhost}/print\$ \
-c "mkdir W32X86;cd W32X86;prompt;mput $( cat ../AllFilesIGot )";
cd .. ;
- # we are now in [..]/W32X86/[drvrname]/[2|3]/
+ # we are now in [..]/W32X86/[drvrname]/[2|3]/
# Now tell Samba that those files are *printerdriver* files....
# The "adddriver" command will move them to the "0" subdir and create or
[ -s sdiff-of-Requested-and-Received.txt ] \
|| rm -f sdiff-of-Requested-and-Received.txt \
&& cat sdiff-of-Requested-and-Received.txt > ../sdiff-of-Requested-and-Received.txt ;
-
+
cat sdiff-of-Requested-and-Received.txt \
| sed -e 's/^/mv /' \
| sed -e 's/ *|/ /' \
-c \'adddriver \"Windows NT x86\" \"$( cat Drivername ):$( cat DriverPath ):$( cat Datafile ):$( cat Configfile ):$( cat Helpfile ):NULL:RAW:$( cat Dependentfiles )\" $( cat driverversion )" \
${smbhost} \' ;
echo " ################ E N D DEBUGGING STATEMENT ################"
-
+
rpcclient -U"${smbprinteradmin}%${smbadminpasswd}" -d 2 \
-c "adddriver \"Windows NT x86\" \"$( cat Drivername ):$( cat DriverPath ):$( cat Datafile ):$( cat Configfile ):$( cat Helpfile ):NULL:RAW:$( cat Dependentfiles )\" $( cat driverversion )" \
${smbhost} ;
set +x ;
-
+
cd ${CURRENTWD} ;
# we are now back to where we started
done;
{
echo -e " \n\
################################################################################
-#
+#
# About fetchallWIN40driverfiles()...
# -----------------------------------
#
-# PRECONDITIONS: 1) This function expects to have the \$nthost variable set to
+# PRECONDITIONS: 1) This function expects to have the \$nthost variable set to
# the according value.
# 2) This function expects to find the \"AllFiles\" file in
# \"\${nthost}/WIN40<drivername>/<driverversion>/TheFiles\".
# "\$nthost" and download the printer driver files from there. To
# achieve that in an orderly fashion, the previously created
# subdirectories (named like the drivers to fetch) are visited in
-# turn and the related files are downloaded for each
+# turn and the related files are downloaded for each
# driver/directory.
#
# IF IT DOESN'T WORK: The function "fetchenumdrivers3listfromNThost" and
# consecutive ones may not have been run successfully. This
# is a precondition for the current function.
-#
+#
# HINT: The current values: 'nthost'=\"$nthost\"
# 'ntprinteradmin'=\"$ntprinteradmin\"
# 'ntadminpasswd'=<not shown here, check yourself!>
-#
+#
################################################################################
# ............PRESS \"q\" TO QUIT............" \
|less
-}
+}
# -----------------------------------------------------------------------------
CURRENTWD=${PWD} ;
for i in ${nthost}/WIN40/*/*/; do \
- cd "${i}";
-
+ cd "${i}";
+
driverversion="$(basename "$(echo "$PWD")")" ;
echo "$(basename "$(echo "$PWD")")" > driverversion ;
AllFiles=$( cat AllFiles ) ;
-
- [ -d TheFiles ] || mkdir TheFiles;
-
+
+ [ -d TheFiles ] || mkdir TheFiles;
+
cd TheFiles;
-
+
echo " "
echo "===================================================="
echo "Downloading files now to ${PWD}....";
{
echo -e " \n\
################################################################################
-#
+#
# About uploadallWIN40drivers()...
# --------------------------------
#
# PRECONDITIONS: 1) This function expects to have '\$smbhost', '\$smbprinteradmin'
# and '\$smbadminpasswd' variables set to according values.
# 2) This function expects to find \"AllFiles\", \"AllFilesIGot\"
-# and \"AllFilesIAskFor\" in the subdirectory
+# and \"AllFilesIAskFor\" in the subdirectory
# \"\${nthost}/WINI40/<drivername>/<driverversion>/TheFiles\".
#
# WHAT IT DOES: These function uses \"smbclient\" to connect to the new Samba
# IF IT DOESN'T WORK: The function \"fetchenumdrivers3listfromNThost\" and
# consecutive ones may not have been run successfully. This
# is a precondition for the current function.
-#
+#
# HINT: The current values: 'nthost'=\"$nthost\"
# 'ntprinteradmin'=\"$ntprinteradmin\"
# 'ntadminpasswd'=<not shown here, check yourself!>
-#
+#
################################################################################
# ............PRESS \"q\" TO QUIT............" \
|less
-}
+}
function uploadallWIN40drivers()
{
if stringinstring help $@ ; then
echo " "
echo "--> Running now function uploadallWIN40drivers()...."
echo "===================================================="
-
+
for i in ${nthost}/WIN40/*/*/; do \
CURRENTWD=${PWD} ;
- cd "${i}" ;
+ cd "${i}" ;
# we are now in [..]/WIN40/[drvrname]/[0]/
-
+
driverversion="$(basename "$(echo "$PWD")")" ;
-
+
echo "$(basename "$(echo "$PWD")")" > driverversion ;
cd TheFiles ;
echo "===================================================="
echo " "
set -x ;
-
+
smbclient -U"${smbprinteradmin}%${smbadminpasswd}" -d 2 \
//${smbhost}/print\$ \
-c "mkdir WIN40;cd WIN40;prompt;mput $( cat ../AllFilesIGot )";
# The "adddriver" command will move them to the "0" subdir and create or
# update the associated *.tdb files (faking the MS Windows Registry on Samba)
Drivername="$( cat Drivername )"
-
+
set -x ;
[ x"$( cat Dependentfiles)" == x"" ] && echo NULL > Dependentfiles;
[ -s sdiff-of-Requested-and-Received.txt ] \
|| rm -f sdiff-of-Requested-and-Received.txt \
&& cat sdiff-of-Requested-and-Received.txt > ../sdiff-of-Requested-and-Received.txt ;
-
+
cat sdiff-of-Requested-and-Received.txt \
| sed -e 's/^/mv /' \
| sed -e 's/ *|/ /' \
rpcclient -U"${smbprinteradmin}%${smbadminpasswd}" -d 2 \
-c "adddriver \"Windows 4.0\" \"$( cat Drivername ):$( cat DriverPath ):$( cat Datafile ):$( cat Configfile ):$( cat Helpfile ):NULL:RAW:$( cat Dependentfiles )\" $( cat driverversion )" \
${smbhost} ;
-
+
set +x ;
cd ${CURRENTWD} ;
# we are now back to where we started
# ${smbhost}
# -- NOT YET IMPLEMENTED IN THIS SCRIPT ---
#
-
+
#source ${0} ;