Sharing a windows printer problem

Joel Hammer Joel at HammersHome.com
Mon Dec 10 05:09:16 GMT 2001


If you are new to scripts:
Is the script executeable?
(chmod +x script)
The line below seems to be your printing command in this script. The rest is
just stuff to set this command up properly. Try filling in the variables
with your own parameters and see if you can print with this command.
cat file | /usr/bin/smbclient "\\\\$server\\$service" $password -U $server -N -P 
I don't understand every line of this script.
You don't need the -P option, according to the man page.
I tried and failed a long time ago to get this sort of funny script to work.
I just finally bit the bullet, learned how to do it manually, and then made
those manual commands my print command. Along the way you'll learn all about
printing and scripting, and then these sorts of problems will be quite easy
to solve.
Joel

On Sun, Dec 09, 2001 at 10:32:56PM -0500, Dominic Y. Deferia wrote:
> 
> ----- Original Message -----
> From: Joel Hammer <Joel at HammersHome.com>
> To: Dominic Y. Deferia <ddeferia at yahoo.com>; <samba at lists.samba.org>
> Sent: Sunday, December 09, 2001 7:16 PM
> Subject: Re: Sharing a windows printer problem
> 
> Joel,
> 
> Thanks for your response. (I included original posting below for those who
> want to contribute ideas. thanks.)
> 
> 
> > What happens when you try to run smbprint from the command line?
> > Joel
> 
> I get a black screen waiting for input.  I am new to linux and I still don't
> know how scripts work. I tried to rename the
> smbprint script to a different file name and create my own smbprint file
> (executable) with command echo >> /tmp/test.txt
> just to see if i print from windows if it will recreate the file but it did
> not. I just put back the original script since
> i know it does not execute it.
> 
> >Are you trying to print from a windows PC to a printer attached to a unix
> >samba server?
> >If so, you don't need this smbprint script.
> >Joel
> 
> I am trying to  use the linux server as a gateway to print to a windows
> machine that has the printer.
> 
> .............
> here is the smbprint 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 at 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=\${$#}                     ; i cannot comprehend these lines
> 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/bin/smbclient "\\\\$server\\$service" $password -U $server -N -P
> >> 
> $logfile
> 
> .............................
> 
> this is the original post to mailing lists
> 
> 
> Hello. I have been trying to print to a windows printer share with no
> success.
> 
> So far I have found out that the smbprint does not execute. I verified this
> by looking at the
> logfile=/tmp/smb-print.log (from smbprint script) after printing from
> windows - this logfile
> was  not created. Also, i verified the path of smbclient and it points to
> the proper directory.
> I am using Debian , and samba 2.0.7.
> 
> 
> 
> my printcap entries are :
> 
> winprt:\
>     :sd=/var/spool/winspl:\            ; this exists, chmod 1777 ....winspl
>     :af=/var/spool/winspl/acct:\      ; this exists, chmod 1777 ....acct
>     :if=/usr/sbin/smbprint:\            ;this seems not to execute, verifed
> the logfile from smbprint
>     :mx#0:\
>     :sh:
> 
> .................
> 
> 
> my smb.conf
> 
> [global]
> 
>     load printers = yes
>     printcap name = /etc/printcap
>     printing = bsd
> 
> [printers]
> 
>     print ok = yes
>     printable = yes
>     path = /tmp/samba/spool       ;chmod 777 for spool directory
>     gues ok = yes
>     browseable = no
> 
> .............
> 
> Under /var/spool/winspl directory, I have .config as
> 
> 
> server=PAPA   ; windows machine
> service=HP      ; printshare name
> password=""
> 
> 
> ............
> 
> Everytime I print, i can see files  dumped into the /var/spool/winspl
> directory. I see status file which states
> "winprt is ready and printing", and sometimes lock file where it has numbers
> in it. The problem i guess is the
> smbprint itself b/c i do not see the log file created everytime i print. I
> also tried to print manually using the smbclient program by
> connecting to the printer and putting in a file and it prints fine. I also
> did testparm and no errors there. Also I did
> testprns printername and the printer name is found.  Any ideas on this
> problem is highly appreciated.
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> -- 
> To unsubscribe from this list go to the following URL and read the
> instructions:  http://lists.samba.org/mailman/listinfo/samba




More information about the samba mailing list