Remote IP

Kurt Pfeifle k1pfeifle at
Thu Oct 11 13:09:30 PDT 2007

Matthias Jansen wrote:

>>> in a backend programm I'm writing, I need the information which IP
>>> address the printing job is from. The only place I found this infor-
>>> mation is in the corresponding file /var/spool/cups/c000<id> but this
>>> file is per default only readable by root but the process of my
>>> backend is spawned as lp.
>> Backends which are set to 0700 permission and owned by root are run as
>> root.
> Thanks for that info! Then the script will be able to parse the cxxxx 
> file to get the hostname.

If by "parse" you mean "grep" and "strings" (basically)... this is

 (a) ugly
 (b) unreliable long-term (format may change)

You should rather use the "testipp" utility that does build when you
compile CUPS (dunno if the distro packagers do ship it -- maybe one
should make a request for them to package this and some more of the
CUPS-provided test utilities...).

Use it like this:

 /path/to/testipp /var/spool/cups/cNNNNN

and parse what output *that* gives to you.

>>> I already tried Net::CUPS (as my backend is
>>> a perl script) but this doesn't seem to give me the information I need.
>>> Is there any other way?
>> I don't know what info Net::CUPS provides at all. But what you are
>> looking for is the IPP job attribute called "job-originating-host-name".
> Yes, I know. This information can be parsed from the cxxxx file.
>> AFAIK, there is no way to access the client IP or hostname value via an
>> environment variable set by CUPS.
> So, parsing the cxxxx file will be the only way to retrieve the IP at 
> the moment?


Kurt Pfeifle
System & Network Printing Consultant ---- Linux/Unix/Windows/Samba/CUPS
Infotec Deutschland GmbH  .....................  Hedelfinger Strasse 58
A RICOH Company  ...........................  D-70327 Stuttgart/Germany

More information about the cups-devel mailing list