mirror of
https://github.com/samba-team/samba.git
synced 2024-12-25 23:21:54 +03:00
05c557c31c
that the old one becomes smbprint.old.
We still need to hack smbprint some more to make sure that we can pass
the username and password in a file rather than on the command line where
local hackers can see it.
(This used to be commit ef970a764e
)
96 lines
2.5 KiB
Bash
Executable File
96 lines
2.5 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# This script is an input filter for printcap printing on a unix machine. It
|
|
# uses the smbclient program to print the file to the specified smb-based
|
|
# server and service.
|
|
# For example you could have a printcap entry like this
|
|
#
|
|
# smb:lp=/dev/null:sd=/usr/spool/smb:sh:if=/usr/local/samba/smbprint
|
|
#
|
|
# which would create a unix printer called "smb" that will print via this
|
|
# script. You will need to create the spool directory /usr/spool/smb with
|
|
# appropriate permissions and ownerships for your system.
|
|
|
|
# Set these to the server and service you wish to print to
|
|
# In this example I have a WfWg PC called "lapland" that has a printer
|
|
# exported called "printer" with no password.
|
|
|
|
#
|
|
# Script further altered by hamiltom@ecnz.co.nz (Michael Hamilton)
|
|
# so that the server, service, and password can be read from
|
|
# a /usr/var/spool/lpd/PRINTNAME/.config file.
|
|
#
|
|
# Script further modified by Richard Sharpe to fix some things.
|
|
# Get rid of the -x on the first line, and add parameters
|
|
#
|
|
# -t now causes translate to be used when sending files
|
|
#
|
|
# In order for this to work the /etc/printcap entry must include an
|
|
# accounting file (af=...):
|
|
#
|
|
# cdcolour:\
|
|
# :cm=CD IBM Colorjet on 6th:\
|
|
# :sd=/var/spool/lpd/cdcolour:\
|
|
# :af=/var/spool/lpd/cdcolour/acct:\
|
|
# :if=/usr/local/etc/smbprint:\
|
|
# :mx=0:\
|
|
# :lp=/dev/null:
|
|
#
|
|
# The /usr/var/spool/lpd/PRINTNAME/.config file should contain:
|
|
# server=PC_SERVER
|
|
# service=PR_SHARENAME
|
|
# password="password"
|
|
#
|
|
# E.g.
|
|
# server=PAULS_PC
|
|
# service=CJET_371
|
|
# password=""
|
|
|
|
#
|
|
# Debugging log file, change to /dev/null if you like.
|
|
#
|
|
logfile=/tmp/smb-print.log
|
|
# logfile=/dev/null
|
|
|
|
|
|
#
|
|
# The last parameter to the filter is the accounting file name.
|
|
# Extract the directory name from the file name.
|
|
# Concat this with /.config to get the config file.
|
|
#
|
|
TRANS=0
|
|
eval acct_file=\${$#}
|
|
spool_dir=`dirname $acct_file`
|
|
config_file=$spool_dir/.config
|
|
|
|
# Should read the following variables set in the config file:
|
|
# server
|
|
# service
|
|
# password
|
|
eval `cat $config_file`
|
|
|
|
while getopts t c; do
|
|
case $c in
|
|
t)
|
|
TRANS=1
|
|
;;
|
|
|
|
'?') # Bad parameters, ignore it ...
|
|
;;
|
|
esac
|
|
done
|
|
#
|
|
# Some debugging help, change the >> to > if you want to same space.
|
|
#
|
|
echo "server $server, service $service" >> $logfile
|
|
|
|
(
|
|
# NOTE You may wish to add the line `echo translate' if you want automatic
|
|
# CR/LF translation when printing.
|
|
if [ $TRANS -eq 1 ]; then
|
|
echo translate
|
|
fi
|
|
echo "print -"
|
|
cat
|
|
) | /usr/local/samba/bin/smbclient "\\\\$server\\$service" $password -U $server -N -P >> $logfile
|