[Samba] Rpcclient - setdriver.
Kurt Pfeifle
kpfeifle at danka.de
Thu May 8 13:15:14 GMT 2003
Kurt Pfeifle (I myself) wrote to the Samba-List:
> Thu May 8 14:19:31 GMT 2003
>
>
> Lars Göransson larg at spray.se wrote on Samba-Digest:
>
>> Mon May 5 17:08:58 GMT 2003
>>
>>
>> I have done one succesful driver for downloading to my windows 2000-client.
>> When i try set another with "setdriver " I get a result as : SetPrinter call failed!
>
> Sorry, Lars,
>
> I didn't notice your attachment the first time I read your post. So
> I didn't consider it in my answer.
>
> So here is my second take....
>
>> The only differens between them is in the desritption-field
>>
>> flags:[0x800000]
>> name:[\\localhost\HP4600]
>> description:[\\localhost\HP4600,HP4600,H4600]
>> comment:[H4600]
>>
>> flags:[0x800000]
>> name:[\\localhost\HP4600CLJ]
>> description:[\\localhost\HP4600CLJ,,HP4600CLJ]
>> comment:[HP4600CLJ]
>>
>> How can I put in HP4600CLJ in between ",," in description:[\\localhost\HP4600CLJ,,HP4600CLJ]
>> In Windows It is shown as "Model", If that is the solution, dont think so..or?
>>
>> I can't understand why there is a difference between this printer as shown with enumprinters, the printcap entrys are similar.
>
> The printcap entry details are of no interest for Samba. It only wants to see
> the printer name in there.
>
>> This is my printcap:
>> -----SNIP--------------------------------------------------------------------
>>
>> # /etc/printcap
>>
>> ##LPRNGTOOL##SOCKET filtertype=IFHP ifhp_options=status,sync,pagecount,waitend printerdb_entry=hpcolorlj
>> H4600|HP4600
>> :cm=HP Color LaserJet 4600
>> :filter=/usr/libexec/filters/ifhp
>> :ifhp=model=hpcolorlj,status,sync,pagecount,waitend
>> :lp=172.21.130.197%9100
>> :lprngtooloptions=FILTERTYPE="IFHP" IFHP_OPTIONS="status,sync,pagecount,waitend" PRINTERDB_ENTRY="hpcolorlj"
>> :mx=0
>> :sd=/var/spool/lpd/%P
>> :sh
>>
>>
>> ##LPRNGTOOL## SOCKET filtertype=IFHP ifhp_options=status,sync,pagecount,waitend printerdb_entry=hpcolorlj
>> HP4600CLJ|HP4600CLJ
>> :cm=HP Color LaserJet 4600
>> :filter=/usr/libexec/filters/ifhp
>> :ifhp=model=hpcolorlj,status,sync,pagecount,waitend
>> :lprngtooloptions=FILTERTYPE="IFHP" IFHP_OPTIONS="status,sync,pagecount,waitend" PRINTERDB_ENTRY="hpcolorlj"
>> :mx=0
>> :sd=/var/spool/lpd/%P
>> :sh
>> :lp=172.21.130.197%9100
>>
>>
>> ---- END SNIP------------------------------------------------------------
>> -
>> BTW i have "guest account = root" and "printer admin = root" in smb.conf.
>
> ???
>
>> "enumdriver 2"
>> ---------------------------------------------------------------------
>> Printer Driver Info 2:
>> Version: [3]
>> Driver Name: [HP4600]
>> Architecture: [Windows NT x86]
>> Driver Path: [\\localhost\print$\W32X86\3\HPBF422G.DLL]
>> Datafile: [\\localhost\print$\W32X86\3\HPBF422I.PMD]
>> Configfile: [\\localhost\print$\W32X86\3\HPBF422E.DLL]
>
> Are you sure that there are not *more* files? Try running "enumdrivers 3"
> to also see the "Dependentfiles" listed.
>
> An alternative method to learn to know all the Dependent files is to
> print a "Test Page" from a Windows client. If your Samba rpcclient
> installation did not work yet, you need to install it the non-SPOOLSS
> ("use client driver") way first. An "enumdriver 3" would show possibly
> s.th. like that:
>
> "enumdriver 3"
> ---------------------------------------------------------------------
> Printer Driver Info 3:
> Version: [3]
> Driver Name: [HP4600]
> Architecture: [Windows NT x86]
> Driver Path: [\\localhost\print$\W32X86\3\HPBF422G.DLL]
> Datafile: [\\localhost\print$\W32X86\3\HPBF422I.PMD]
> Configfile: [\\localhost\print$\W32X86\3\HPBF422E.DLL]
> Helpfile: [\\localhost\print$\W32X86\3\something.HLP]
>
> Dependentfiles: [\\localhost\print$\W32X86\3\firstname.DLL]
> Dependentfiles: [\\localhost\print$\W32X86\3\secondname.INI]
> Dependentfiles: [\\localhost\print$\W32X86\3\thirdname.DLL]
> Dependentfiles: [\\localhost\print$\W32X86\3\fourthname.dat]
> [....]
> Dependentfiles: [\\localhost\print$\W32X86\3\lastname.cat]
>
>
> (Dependentfiles may or may not be there. Their names vary largely)
> Can you check for this and report back?
>
>> Printer Driver Info 2:
>> Version: [3]
>> Driver Name: [HP4600CLJ]
>> Architecture: [Windows NT x86]
>> Driver Path: [\\localhost\print$\W32X86\3\HPBF422G.DLL]
>> Datafile: [\\localhost\print$\W32X86\3\HPBF422I.PMD]
>> Configfile: [\\localhost\print$\W32X86\3\HPBF422E.DLL]
>
> OK -- this is a more modern driver, version 3, going into the "3"
> subdirectory (reserved for drivers which don't run in Kernal mode).
> I have not much experience with those. I believe the "3" subdir is
> only there on W2k/XP, but not on WinNT. [Could someome please shout
> very loudly "NOT TRUE!" if he notices otherwise on an NT system??]
>
> This listing seems to suggest that the "HP4600CLJ" driver is indeed
> registered with Samba. From this I would derive that your adddriver
> command had been this:
>
> rpcclient -Uroot%xxxx -c `adddriver "Windows NT x86" "HP4600CLJ:HPBF422G.DLL:HP4600CLJ.PND:HPBF422E.DLL:[HERE_SHOULD_BE_NAME_OF_HELP_FILE]:NULL:RAW:NULL" localhost'
>
> But if your driver/print-combo with the name HP4600 is working, but
> the one with the name HP4600CLJ is *not* (with really identical
> installations!), then I am stumped too. My only wild speculation
> then is this: could it be that the driver name is too long (with 9
> characters)???
>
> Try these steps then:
>
> * [ Collect all the files -- HPBF422G.DLL; HP4600CLJ.PND;
> HPBF422E.DLL: [HERE_SHOULD_BE_NAME_OF_HELP_FILE];
> firstname.DLL thru lastname.cat; in one directory
>
> * cd into that directory.
>
> * smbclient //localhost/print\$ -U'root%xxx -c 'cd W32X86; put HPBF422G.DLL; put HP4600CLJ.PND; put HPBF422E.DLL put [HERE_SHOULD_BE_NAME_OF_HELP_FILE]'
I was in too much of a hurry, when I pasted this over. It is not complete.
You'll have to put all the "Dependentfiles" to the upload location too:
* smbclient //localhost/print\$ -U'root%xxx -c 'cd W32X86; put HPBF422G.DLL; put HP4600CLJ.PND; \
put HPBF422E.DLL put [HERE_SHOULD_BE_NAME_OF_HELP_FILE]; put <all listed Dependentfiles>'
|||||||||||||||||||||||||
> * rpcclient -Uroot%xxxx -c `adddriver "Windows NT x86" "HP4600CL:HPBF422G.DLL:HP4600CLJ.PND:HPBF422E.DLL:[HERE_SHOULD_BE_NAME_OF_HELP_FILE]:NULL:RAW:NULL" localhost'
> MOTE. that this uses an 8-character long driver name "HP4600CL".
> If this fails, check for typos, but repeat the smbclient
> command before...)
The same correction applies here:
* rpcclient -Uroot%xxxx -c `adddriver "Windows NT x86" "HP4600CL:HPBF422G.DLL:HP4600CLJ.PND:HPBF422E.DLL:\
[HERE_SHOULD_BE_NAME_OF_HELP_FILE]:NULL:RAW:ListOfAllDependentfiles,comma-separated" localhost'
|||||||||||||||||||||||||||||||||||||||
Sorry, if this caused confusion!
> * rpcclient -Uroot%xxxx -c `setdriver HP4600CL HP4600CLJ' localhost
> NOTE that this uses the 8-char drivername, but the 9 char
> printer name. If this fails, create another printer with 8 chars
> too and and try again.
>
> -----------------
>
> One last wild speculation is: Your printing *.tdb files might have
> become corrupted. Try to delete them (and loose all your printing
> setup!) and start again. (Or make a backup of the *.tdb files first,
> for easier re-build in case that was not the culprit)
>
> ----------------
>
> BTW, I forgot which version of Samba you are running....
>
> ----------------
>
>> -----------------------------------------------------------------------------
>> They are exactly the same.
>>
>>
>> When I run setdriver HP4600CLJ HP4600CLJ (rpccliend -d 5localhost) this is a part of the log-file:
>> -----------------------------------------------------------------
>> rpc_api_pipe: len left: 0 smbtrans read: 28
>> rpc_api_pipe: fragment first and last both set
>> 000018 spoolss_io_r_setprinter
>> 0018 status: WERR_ACCESS_DENIED
>
> What were the credentials use for this rpcclient command?
> Is there any hint above that that the context was switched?
>
>> SetPrinter call failed!
>> make_spoolss_q_closeprinter
>> 000000 spoolss_io_q_closeprinter
>> 000000 smb_io_pol_hnd printer handle
>> 0000 data1: 00000000
>> 0004 data2: 00000002
>> 0008 data3: 0000
>> 000a data4: 0000
>> 000c data5: a6 6e b6 3e f0 05 00 00
>> rpc_api_pipe_req: Outgoing data not a multiple of 8 bytes....
>> create_rpc_request: opnum: 0x1d data_len: 0x2c
>> create_rpc_request: data_len: 2c auth_len: 0 alloc_hint: 1c
>>
>> -----------------------------------------------------------------------
>>
>> ACCESS DENIED, why? I´m running this as root.
>>
>> Is there another way to log rpcclient then the rpcclient -d [level] option?
>
> You can increase or decrease the smbd log level "on the fly" as root
> with
>
> smbcontrol smbd debug 5
>
> Check current value with
>
> smbcontrol smbd debuglevel
>
> It then all goes into the log files. You can disble the
> timestamps with
>
> debug timestamp = no
>
> in smb.conf which makes for better readability of the log files.
>
>>
>> Lars
>
> Cheers,
> Kurt
>
More information about the samba
mailing list