JetDirect IPX-Konfiguration

Aus Knowledgebase
Version vom 17. März 2019, 01:17 Uhr von PoC (Diskussion | Beiträge) (Mehr Trennlinien)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Der offiziell dokumentierte Weg von HP, alle IPX-Parameter einer (älteren) JetDirect-Schnittstelle zu konfigurieren, ist der JetAdmin. Diese Software existiert heutzutage als Web-Jetadmin, die nur mit vorheriger Registrierung zugänglich ist.
Eigene Recherchen haben gezeigt, dass der JetAdmin letztendlich per SNMP (über IPX als Transport) die entsprechenden Parameter setzt.

Bei neueren Karten ist die Konfiguration über den integrierten Webserver möglich.

Grundkonfiguration SNMP

Sobald die TCP/IP-Parameter der JetDirect-Schnittstelle über das Bedienfeld gesetzt wurden, kann eine Telnetverbindung auf die IP-Adresse des Druckers abgesetzt werden:

telnet hp4 
Connected to hp4.
Escape character is '^]'.

HP JetDirect

Please type "?" for HELP, or "/" for current settings
> 

Die Hilfefunktion gibt Hilfestellung zur Bedienung und wird daher nicht nochmal wiedergegeben. Die unbedingt zu setzenden Parameter sind:

  • Set Cmnty Name

Optional (wegen Bequemlichkeit und Sicherheit) kann gesetzt werden:

  • Default Get Cmnty (wäre public)
  • Passwd (am Prompt passwd eingeben, damit nicht jeder sich einloggen kann und den Communitynamen im Klartext sieht.

Die unten angegebene JetDirect-MIB muss heruntergeladen werden und für die SNMP-Kommandozeile erreichbar abgelegt werden. Für NetSNMP siehe dazu die Manpage snmpcmd, Abschnitte über die Parameter -M und -m. Viele Parameter können auch in einer persönlichen ~/.snmp/snmp.conf vermerkt werden, um die benötigte Kommandozeile abzukürzen.

Abfrage

Die MIB-Datei enthält textuelle Übersetzungen für sehr viele Parameter der JetDirect-Schnitsttelle. Eine komplette Ausgabe kann durch

snmpwalk hp4 JETDIRECT3-MIB::hp

erreicht werden. Viele Parameter sind selbsterklärend. Andere sind in Kommentaren der MIB-Datei erklärt.

JetDirect-Konfiguration

Die Konfiguration wird durch snmpset erreicht. Siehe zugehörige Manpage. Die Syntax in Kürze:

snmpset [COMMON OPTIONS] OID TYPE VALUE [OID TYPE VALUE]...

Type ist ein einzelner Buchstabe. Für uns sind wichtig: (i)nteger und (s)tring.

Nicht alle SNMP-Variablen sind schreibbar. Manchmal ist das augenscheinlich (Paketzähler der Netzwerkkarte) und manchmal nicht. Genaue Information über den Status finden sich in der MIB-Datei.

Die Beispiele unten sind in einzelne snmpset-Kommandos aufgeteilt, um die Übersichtlichkeit zu erhöhen. Diese können aber auch mit einem einzelnen Aufruf, also in einem Rutsch gesetzt werden.

IPX-Konfiguration

Eine Liste, eingeschränkt auf die für IPX relevanten Variablen erzeugt ein

snmpwalk hp4 JETDIRECT3-MIB::npIpx

Für uns interessant ist hautpsächlich die Umgehung von JetAdmin für die Konfiguration einer Verbindung von Drucker und Netware. Den IPX-Rahmentypen kann man auch über das Display einstellen.

Die JetDirect Karten kennen zwei Modi dieser Verbindung, die naturgegeben eng mit der entsprechenden Einrichtung von Netware verknüpft sind:

  • Remoteprinter, dabei verhält sich der die Logik auf der JetDirect-Karte wie das unter DOS früher gern verwendete rprinter.com-TSR. Verbraucht keine Benutzerverbindung auf dem Server (Lizenz für max. Anzahl Benutzer evtl. schneller ausgereizt).
  • Printserver, heißt, dass die JetDirect-Karte einen kompletten Printserver emuliert. Braucht auf der Netware-Installation keinen Speicher (für pserver.nlm), ist schneller als rprinter.

Vorbereitungen auf der Netware-Seite


Ansicht nach dem Anlegen eines Printservers

Wir behandeln hier nur den Bindery-Modus.

Zu Verwaltung der Druckfunktionen in Netware dient das interaktive DOS-Programm pconsole, das z. B. auch in der Cmd-Box von Windows läuft. Es liegt in sys:public und ist nach Anmeldung und Mappen eines Laufwerksbuchstabens zugänglich (auch wenn es nicht im Suchpfad liegt). Standardmäßig darf nur der Administrator (supervisor) die Druckfunktionen verwalten.

Auf der Netware-Seite muss ein Printserverobjekt angelegt werden. Das geht über den Menüpunkt Print Server Information. In dem folgenden Fenster kann mit Insert ein neuer Server angelegt werden. Der Name des Printservers muss mit dem später für die JetDirect verwendeten Namen übereinstimmen.

Dasselbe muss mit der/den Druckerqueue(s) geschehen angelegt werden. Das geht über den Menüpunkt Print Queue Information. In dem folgenden Fenster kann mit Insert eine neue Queue angelegt werden.

Ansicht des Menüs Print Queue Information
Überführen von Einträgen der Queue Server Candidates zu den Queue Servers

Die Queue und der Printserver müssen nun miteinander verknüpft werden. In der Print Queue Information kann eine Liste der Queue-Servers abgerufen werden, die standardmäßig erstmal leer ist. Mit Insert erscheint eine Auswahlliste der vorhandenen Printserver. Mit Return kann dieser der Queue zugeordnet werden.

Einstellungen auf der JetDirect-Karte


Der auf Netware-Seite angelegte Printserver darf sich jetzt ohne Passwort (was auf der JetDirect-Karte nicht setzbar ist) mit dem Fileserver verbinden und die zugeordneten Queue(s) periodisch auf Inhalt überprüfen.

snmpset hp4 JETDIRECT3-MIB::npIpxServerConnName.1 s NETWARESERVER
snmpset hp4 JETDIRECT3-MIB::npIpxUnitName.0 s PRT_WZ

Mit dem Setzen des ersten Parameters wird der JetDirect der Server vorgegeben, auf dem die Queue(s) liegen. Mit dem zweiten Aufruf wird die JetDirect-Karte mit einem IPX-Namen versehen. Dieser muss gleich lauten wie der Namen des oben angelegten Printservers auf der Netware-Seite.

Jeder (erfolgreiche) Schreibvorgang auf die Variable npIpxUnitName setzt alle (auch aktive) Verbindungen via IPX zurück und startet den IPX-Stack der Karte neu. Das gilt auch explizit dann, wenn der neue und der bisherige Name gleich sind. Einen Reset auf Werkseinstellungen aller IPX-relevanten Parameter erreicht man durch Setzen dieser Variable auf einen leeren String:

snmpset hp4 JETDIRECT3-MIB::npIpxUnitName.0 s ""

Die teilweise automatisch getroffenen Einstellungen können durch Abfrage der Verbindungstabelle eingesehen werden:

snmpwalk hp4 JETDIRECT3-MIB::npIpxServerConnTable
JETDIRECT3-MIB::npIpxServerConnIndex.1 = INTEGER: 1
JETDIRECT3-MIB::npIpxServerConnMode.1 = INTEGER: qserver-bindery(2)
JETDIRECT3-MIB::npIpxServerConnName.1 = STRING: "NETWARESERVER"
JETDIRECT3-MIB::npIpxServerConnStatus.1 = INTEGER: 19
JETDIRECT3-MIB::npIpxServerConnNcpStatus.1 = INTEGER: 213
JETDIRECT3-MIB::npIpxServerConnNdsStatus.1 = INTEGER: 0

Hier hat die JetDirect-Karte z. B. herausgefunden, dass sie im Bindery-Modus arbeiten muss (npIpxServerConnMode). Eine funktionierende Verbindung zum Server (ohne aktiven Druckjob) ist durch npIpxServerConnStatus=19 und npIpxServerConnNcpStatus=213 erkennbar. Leider gibt es keine zugängliche Dokumentation zu den Statuscodes. Diese könnten lediglich durch Packetdumps entsprechender JetAdmin-Funktionsaufrufe erhalten werden.

Die Abfragehäufigkeit der Queue(s) kann verringert werden, um die Last auf dem Server klein zu halten:

snmpset hp4 JETDIRECT3-MIB::npIpxJobPollInterval.0 i 5

Default ist 2 s.

Remote Printer Mode


Einstellungen für einen Remote Printer

Auf Netwareseite muss ein Printserver eingerichtet werden (nicht mit dem Namen der JetDirect-Karte!) und dort der/die Drucker in den vorgegebenen Slots angelegt werden mit der Vorgabe Remote/Unknown. Das pserver.nlm muss mit dem Namen des Printservers geladen werden (hier: POCNET).

Auf der JetDirect-Karte sind zusätzlich zu oben noch die Namen des Printservers auf dem Server, sowie die Druckernummer zu konfigurieren. Dies muss nach dem erstmaligen Initialisieren der Karte als Queueserver geschehen, sonst werden die Parameter nicht akzeptiert!

snmpset hp4 JETDIRECT3-MIB::npIpxRcfgRemotePrintServerName.0 s "POCNET"
snmpset hp4 JETDIRECT3-MIB::npIpxRcfgRemotePrinterNumber.0 i 0
snmpset hp4 JETDIRECT3-MIB::npIpxUnitName.0 s PRT_WZ

Wichtig ist in dem Zusammenhang, dass der npIpxRcfgRemotePrintServerName exakt 12 Zeichen enthalten muss. Ist der Druckservername kürzer, muss mit Nullbytes aufgefüllt werden. Insofern ist das gezeigte Beispiel nicht gültig. Das kann zum Beispiel mit der Übergabe des Druckservernamens als Hex-String geschehen (statt s mit x).

echo -n POCNET |hexdump
0000000 4f50 4e43 5445
0000006

Das was hier rauskommt entspricht interessanterweise dem String OPNCTE. Wir müssen also jeweils zwei Bytes miteinander vertauschen und dies einsetzen:

snmpset hp4 JETDIRECT3-MIB::npIpxRcfgRemotePrintServerName.0 x "50 4f 43 4e 45 54 00 00 00 00 00 00"
Ansicht des geladenen pserver.nlm in der Netware-Konsole

Nach dem obligatorischen Reset des IPX-Stacks durch erneutes Beschreiben der npIpxUnitName-Variable ist in der Variable npIpxServerConnMode der rprinter-Modus vermerkt. Der Rprinter in der JetDirect-Karte verbindet sich dann auf den Printserver, um vom Printservertask die Jobs zugeschaufelt zu bekommen.

Die Verbindungstabelle sieht dann wie folgt aus:

snmpwalk hp4 JETDIRECT3-MIB::npIpxServerConnTable
JETDIRECT3-MIB::npIpxServerConnIndex.1 = INTEGER: 1
JETDIRECT3-MIB::npIpxServerConnMode.1 = INTEGER: rprinter(3)
JETDIRECT3-MIB::npIpxServerConnName.1 = STRING: "POCNET"
JETDIRECT3-MIB::npIpxServerConnStatus.1 = INTEGER: 11
JETDIRECT3-MIB::npIpxServerConnNcpStatus.1 = INTEGER: 0
JETDIRECT3-MIB::npIpxServerConnNdsStatus.1 = INTEGER: 0

Weblinks