个人工具

UbuntuHelp:NetwarePrintingFromUbuntu

来自Ubuntu中文

Oneleaf讨论 | 贡献2007年5月14日 (一) 11:26的版本

跳转至: 导航, 搜索


Introduction

This page covers only how to install a Netware Printer Queue in Ubuntu.

What is Needed

perl - Larry Wall's Practical Extraction and Report Language, needed for ncp script.

ipx - utilities to configure the kernel ipx interface.

ncpfs - a set of utilities to use resources from NetWare servers, in particular nprint to print to a netware printer queue.

kdeprint - print system for KDE, this is a very nice tool.

NCP script

Create the script /usr/lib/cups/backend/ncp


use strict;


my $NPRINT = "nprint";

my $NCP_HOME = "/root";




if (scalar(@ARGV) == 0) {
    print "network ncp \"Unknown\" \"NetWare Printer via NCP\"\n";
    exit 0;
}

if (scalar(@ARGV) < 5 || scalar(@ARGV) > 6) {
    print STDERR "ERROR: ncp job user title copies options [filename]\n";
    exit 1;
}

my ($job, $user, $title, $copies, $options, $file) = @ARGV;
my $printer = $ENV{"DEVICE_URI"};

my ($server, $queue, $nwuser, $nwpass);

for ($printer) {

    # ncp://USERNAME:PASSWORD@SERVER/QUEUE
    m|^ncp://(.+):(.*)@(.+)/(.+)| && do {
	$nwuser = $1;
	$nwpass = $2;
	$server = $3;
	$queue = $4;
	last;
    };

    # ncp://USERNAME@SERVER/QUEUE
    m|^ncp://(.+)@(.+)/(.+)| && do {
	$nwuser = $1;
	$server = $2;
	$queue = $3;
	last;
    };

    # ncp://SERVER/QUEUE
    m|^ncp://(.+)/(.+)| && do {
	$server = $1;
	$queue = $2;
	last;
    };
}

if (not defined $server or not defined $queue) {
    print STDERR "ERROR: malformed printer URI\n";
    exit 1;
}

$nwuser =~ s/%([a-fA-F0-9]{2})/chr(hex($1))/ge if defined $nwuser;
$nwpass =~ s/%([a-fA-F0-9]{2})/chr(hex($1))/ge if defined $nwpass;
$server =~ s/%([a-fA-F0-9]{2})/chr(hex($1))/ge if defined $server;
$queue  =~ s/%([a-fA-F0-9]{2})/chr(hex($1))/ge if defined $queue;

my @command = ($NPRINT, "-S", $server, "-q", $queue, "-N");

if (defined $nwuser) {
    push @command, "-U";
    push @command, $nwuser;
}

if (defined $nwpass) {
    push @command, "-P";
    push @command, $nwpass;
}

if (defined $file) {
    if ($file =~ /^-/) {
	# Avoid file names which look like switches
	$file = "./$file";
    }
    push @command, $file;
} else {
    push @command, "-";
}

$ENV{"HOME"} = $NCP_HOME;

my $result = system { $command[0] } @command;

if ($result != 0) {
    print STDERR "ERROR: nprint exited with status $result\n";
    exit 1;
}

exit 0;
    

Restart CUPS

   After changing this file, restart CUPS by running ...
sudo /etc/init.d/cupsys restart
   or use the Services tool under Gnome menu System -> Administration.

Add a Netware Printer with Gnome menu System and kdeprint

1. Add a printer definition, using kdeprint (Gnome menu System -> Preferences -> Printers).

Select Other printer type.

In the URl: type

ncp://COMPANY_FS/PRINTER_Q

If at this point you don't see 'Netware Printer via ncp' then refer to 'NCP Script' above.

Select the relevent printer etc. and you should have a working Netware Printer.

Add a Netware Printer with Cups Web Interface

This needs an Administrator account.

Please refer to NetworkPrintingWithUbuntu -> Ubuntu Client Machine for more info.


LogLevel warning

SystemGroup lpadmin


    
    
ConfigFilePerm 0600
LogLevel info
Printcap /var/run/cups/printcap
RunAsUser Yes
Port 631
    
BrowseOrder allow,deny
BrowseAllow @LOCAL
BrowseAddress @LOCAL
     
<Location />
AuthType None
Order Deny,Allow
Deny From All
Allow From @LOCAL
</Location>
     
<Location /jobs>
AuthType None
Order Deny,Allow
Deny From All
Allow From @LOCAL
</Location>
     
<Location /printers>
AuthType None
Order Deny,Allow
Deny From All
Allow From @LOCAL
</Location>
     
<Location /admin>
AuthType None
Order Deny,Allow
Deny From All
Allow From @LOCAL
</Location>

DefaultAuthType Basic

<Location /admin/conf>
  AuthType Basic
  Require user @SYSTEM
  Order allow,deny
  Allow localhost
</Location>

<Policy default>
  # Job-related operations must be done by the owner or an adminstrator...
  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job>
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>

  # All administration operations require an adminstrator to authenticate...
  <Limit Pause-Printer Resume-Printer Set-Printer-Attributes Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After CUPS-Add-Printer CUPS-Delete-Printer CUPS-Add-Class CUPS-Delete-Class CUPS-Accept-Jobs CUPS-Reject-Jobs CUPS-Set-Default>
    AuthType Basic
    Require user @SYSTEM
    Order deny,allow
  </Limit>

  # Only the owner or an administrator can cancel or authenticate a job...
  <Limit Cancel-Job CUPS-Authenticate-Job>
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>

  <Limit All>
    Order deny,allow
  </Limit>
</Policy>

Include /etc/cups/cups.d/ports.conf
Include /etc/cups/cups.d/browse.conf
   

To access the Cups Web Interface goto http://localhost:631/


AccessingNetwareShares