perl NET::Printer to cups-lpd on OS X gives not ready/ready
Johan Henselmans
johan at netsense.nl
Tue Jun 2 08:37:51 PDT 2009
Setup: Mac OS X Server 10.5.7.latest updates
I have a raw printer interface to a USB connected printer (it has to be a raw interface because all kinds of reasons).
I connect to the printer via perl with the Net::Printer module.
A sample script:
===============
use Net::Printer;
$lineprinter = new Net::Printer(filename => "/tmp/ticket.txt",
printer => "ticketprinter",server => "localhost",port => 515,
lineconvert => "YES");
$result = $lineprinter->printfile();
# Did I get an error?
$errstr = $lineprinter->printerror();
if ($errstr){
print $errstr;
}
# Get Queue Status
@result = $lineprinter->queuestatus();
print @result;
=====================
This worked flawlessly under 10.4.x.
I am now testing the same setup under 10.5.x and I am getting errors:
This is what I am getting back from the script:
ERROR:Net::Printer[157]: Printer ticketprinter on localhost not ready!ticketprinter at localhost: ticketprinter is ready
ticketprinter at localhost: no entries
In the system log I see these errors:
org.cups.cups-lpd[2609]: launchproxy[2609]: /usr/libexec/cups/daemon/cups-lpd: Connection from: 127.0.0.1 on port: 51469
I have tried another interface, via IPP, which works, but I am curious why this
will not work.
I had a look at /System/Library/LaunchDaemons/org.cups.cups-lpd.plist to have a look if that might be the problem, but I could not really understand why this would interfere:
<key>Label</key>
<string>org.cups.cups-lpd</string>
<key>ProgramArguments</key>
<array>
<string>/usr/libexec/cups/daemon/cups-lpd</string>
<string>-o</string>
<string>document-format=application/octet-stream</string>
</array>
<key>SHAuthorizationRight</key>
<string>system.preferences</string>
<key>Sockets</key>
<dict>
<key>Listeners</key>
<dict>
<key>SockServiceName</key>
<string>printer</string>
<key>SockType</key>
<string>stream</string>
</dict>
</dict>
<key>UserName</key>
<string>_lp</string>
<key>inetdCompatibility</key>
<dict>
<key>Wait</key>
<false/>
</dict>
Anybody any explanation why the lpd interface on a raw printerqueue is not working?
More information about the cups
mailing list