diff --git a/lib/FusionInventory/Agent/Task/Inventory/Generic/Printers.pm b/lib/FusionInventory/Agent/Task/Inventory/Generic/Printers.pm index fae279f..1522e40 100644 --- a/lib/FusionInventory/Agent/Task/Inventory/Generic/Printers.pm +++ b/lib/FusionInventory/Agent/Task/Inventory/Generic/Printers.pm @@ -50,21 +50,32 @@ sub doInventory { my @printers = $cups->getDestinations(); foreach my $printer (@printers) { - my $uri = $printer->getUri(); - my $name = $uri; - $name =~ s/^.*\/\/([^\.]*).*$/$1/eg ; - $name =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg; - $inventory->addEntry( - section => 'PRINTERS', - entry => { - NAME => $name, - PORT => $uri, - DESCRIPTION => $printer->getDescription(), - DRIVER => $printer->getOptionValue( - "printer-make-and-model" - ), - } - ); + my $uri = $printer->getOptionValue("device-uri"); + $uri =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg; + my ($serial,$network,$shared,$port)=''; + if ($uri =~ /usb/){ + $serial = $uri; + $network=0; + $shared=0; + $port='USB'; + $serial =~ s/^.*\?serial\=//g; + $serial =~ s/\&.*//g; + my $name = $printer->getUri(); + $name =~ s/^.*\/\/([^\.]*).*$/$1/eg ; + $name =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg; + $inventory->addEntry( + section => 'PRINTERS', + entry => { + NAME => $name, + PORT => $port, + DESCRIPTION => $printer->getDescription(), + DRIVER => $printer->getOptionValue( + "printer-make-and-model" + ), + SERIAL => $serial, + } + ); + } } }