[Samba] Re: CUPS, APW
Martin Zielinski
mz at seh.de
Mon Dec 6 16:14:06 GMT 2004
Hello,
you shouldn't need to restart samba.
I'm using a C-programm as addprinter command, and do not need to restart
samba.
Samba does it by it's own, if it receives one or more lines of text from the
script.
You allways get these access denied errors, when no line is printed.
I know nearly nothing about perl, but (just as an idea) the script output
needs a newline at its end. I don't know, if perl does this automaticly.
In doubt, take a look at a level 10 debug. You should see the output of your
script.
Bye,
Martin
On Monday 06 December 2004 16:29, Jeff Hardy wrote:
> > | I am left with two problems... the Access Denied error,
> > | and the requirement for an external daemon to restart
> > | Samba to complete the process. It works, but I seem to
> > | be missing something.
> >
> > A simple kill -HUP <pid> is enough. You shouldn't restart
> > smbd.
>
> Thanks again. I had previously done this but switched to a restart for
> some reason.
>
> Here is a stripped down version of my Perl addprinter script, for what
> it is worth. When I looked into this before, I didn't find many
> examples so maybe it is of some use. Trying to nail that Access Denied
> problem... if you could, can you please tell me if you see anything
> wrong or missing?
>
> Thanks again for all your help.
>
>
>
> #!/usr/bin/perl
> #
> # param 1 : printer name
> # param 2 : share name -> become the printer name for CUPS
> # param 3 : port name
> # param 4 : driver name
> # param 5 : location -> the device uri of the printer, probably IP
> addy
> # param 6 : win9x location
>
> require '/usr/local/bin/smbapwlib.pl'; #some useful functions
>
> #take in args
> $lpname=shift;
> $shname=shift;
> $portname=shift;
> $drivername=shift;
> $location=shift;
> $win9x=shift;
>
> #if queue exists, don't do anything
> #this is because addprinter command is run each time printer modified
> if (!(&checkqueue($shname))){
>
> $shname = uc($shname);
>
> #check for location syntax
> #if no protocol specified...
> if ($location !~ m#:/#){
> #assume an lpd printer
> $location = "lpd://".$location;
> }
>
> #run the cups lpadmin command to add the printer
> system("/usr/sbin/lpadmin -p $shname -D \"$drivername\" -E -v
> $location");
>
> sleep 1;
>
> #print sharename to make the port look nice
> #also supposed to cause samba to reload its config
> print ("$shname");
>
> #reload samba manually
> system("/usr/bin/killall","-HUP","smbd");
>
> sleep 2;
> }
--
Martin Zielinski mz at seh.de
Software Development
SEH Computertechnik GmbH www.seh.de
More information about the samba
mailing list