[Samba] Re: CUPS, APW

Jeff Hardy hardyjm at potsdam.edu
Mon Dec 6 18:30:55 GMT 2004


One final question... the deleteprinter command is correctly deleting
the underlying CUPS queue and Samba is receiving a SIGHUP.  But, the
printer still shows in Samba until I restart the daemon.  Bug?


On Mon, 2004-12-06 at 11:26, Jeff Hardy wrote:
> Haha.  It was that pesky newline.  See below.
> 
> Everything works perfectly now.  Thanks very much.
> 
> -Jeff
> 
> 
> On Mon, 2004-12-06 at 11:14, Martin Zielinski wrote:
> > 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");
> 
> # Change this to:
> 
> print ("$shname\n");
> 
> 
> > >
> > >         #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