Drucken und Scannen mit CUPS

R

ralli

Guest
Nachdem ich sah, das das Drucken und Scannen unter GhostBSD möglich war, habe ich mich jetzt mit CUPS eingearbeitet, damit das auch unter FreeBSD einwandfrei funktioniert. Die Einrichtung ist gegenüber früher meineserachtens etwas einfacher geworden.

- CUPS installieren

- xsane zu Scannen installieren

Druckertreiber splix für den Laserdrucker ML-1510 installieren

Druckertreiber hplip für den HP Photosmart 4100 installieren

In die /etc/rc.conf:
Code:
lpd_enable="NO"

cupsd_enable="YES"

Der Gruppe cups die User ralph und root hinzugefügt:

Code:
pw usermod root -G cups
pw usermod ralph -G cups

oder direkt mit ee /etc/group ändern.

Hier mal nicht auszugsweise sondern meine komplette /etc/devfs.conf

Code:
 # Alle Benutzer für optische Medien

    perm    /dev/acd0       0666
    perm    /dev/acd1       0666
    perm    /dev/cd0        0666
    perm    /dev/cd1        0666

    # Zum mounten aller USB Devices

    perm    /dev/da0        0666
    perm    /dev/da1        0666
    perm    /dev/da2        0666
    perm    /dev/da3        0666
    perm    /dev/da4        0666
    perm    /dev/da5        0666

    # Alle anderen devices

    perm    /dev/pass0      0666
    perm    /dev/xpt0       0666
    perm    /dev/uscanner0  0666
    perm    /dev/video0     0666
    perm    /dev/tuner0     0666
    perm    /dev/dvb/adapter0/demux0    0666
    perm    /dev/dvb/adapter0/dvr       0666
    perm    /dev/dvb/adapter0/frontend0 0666

und die Einträge in /etc/devfs.rules:

Code:
[devfsrules_common=7]
add path 'ad[0-9]\*'        mode 666
add path 'ada[0-9]\*'    mode 666
add path 'da[0-9]\*'        mode 666
add path 'acd[0-9]\*'    mode 666
add path 'cd[0-9]\*'        mode 666
add path 'mmcsd[0-9]\*'    mode 666
add path 'pass[0-9]\*'    mode 666
add path 'xpt[0-9]\*'    mode 666
add path 'ugen[0-9]\*'    mode 666
add path 'usbctl'        mode 666
add path 'usb/\*'        mode 666
add path 'lpt[0-9]\*'    mode 666
add path 'ulpt[0-9]\*'    mode 666
add path 'unlpt[0-9]\*'    mode 666
add path 'fd[0-9]\*'        mode 666
add path 'uscan[0-9]\*'    mode 666
add path 'video[0-9]\*'    mode 666
add path 'tuner[0-9]*'  mode 666
add path 'dvb/\*'        mode 666
add path 'cx88*' mode 0660
add path 'cx23885*' mode 0660 # CX23885-family stream configuration device
add path 'iicdev*' mode 0660
add path 'uvisor[0-9]*' mode 0660

Nicht vergessen, die Regeln in /etc/rc.conf zu aktivieren:

Code:
devfs_system_ruleset="devfsrules_common"

Diesen Eintrag hat ja wohl jeder in der /etc/sysctl.conf, damit alles devices auch als normaler User benutzt werden können:

Code:
vfs.usermount=1

Im Browser Deiner Wahl http://localhost:631 die CUPS Oberfläche starten und die Drucker nacheinander einschalten und hinzufügen.

Rechner neu starten.

Ich habe das ganze ausgiebig unter einem einfachen Windowmanager getestet, Drucker und Scanner arbeiten einwandfrei.

Have a fun .....:)

Geholfen hat mir unter anderem Nicoles Seite:

https://cooltrainer.org/a-freebsd-desktop-howto/#printing
 
Unter dem KDE Desktop ist es noch einfacher. Drucker werden unter Systemeinstellungen - Drucker hinzugefügt. Da brauchen wir dann die CUPS Oberfläche im Browser nicht.

Ich habe meine Drucker als lokale Drucker in CUPS auf die klassiche Art konfiguriert, und nicht als Printserver mittels Drucker IP. Das zickt nicht. Zu Problemen kann es kommen, wenn ein verkehrter Druckertreiber zum Einsatz kommt, oder die Zugriffsrechte nicht ausreichend gesetzt wurden.
 
Zur Vollständigkeit:
Linux Mint hat auch einen solchen Wrapper, auch unter XFCE und Mate. Zwecks Faulheit/Einfachheit eine gute Sache, ich prüfe dennoch die CUPS-Oberfläche danach. ;)
Danke @mr44er, ja ganz genau so ist es. Auf die CUPS Oberfläche wird man eh nicht gänzlich verzichten können, da dort ja auch die Druckeraufträge verwaltet werden und vieles mehr. Oder es kommt zu einem Papierstau, dann muß nämlich der angehaltene Drucker neu gestartet werden. Ist alles nicht so schwierig, aber man muß sich halt ein wenig damit beschäftigen. Letztendlich hängt auch alles an der Freigabe durch das Setzen der Rechte in devfs.conf und devfs.rules. Wenn das alles richtig konfiguriert ist, gibt es auch keine Probleme mit dem mounten. Und zwar als normaler User, bei mir habe ich als normaler User jetzt Zugriff auf alle Devices, Brenner, Scanner, Drucker...
 
Freigabe durch das Setzen der Rechte in devfs.conf und devfs.rules. Wenn das alles richtig konfiguriert ist, gibt es auch keine Probleme mit dem mounten.
Aber mounten hat mit Drucken ja nichts zu tun.

ich will mal meine beiden devfs-Dateien zeigen:
Code:
pit@senyo ~:- > cat /etc/devfs.rules | sed '/^#/d' | grep .
[pitrules=11]
add path 'speaker' mode 0660 group operator
add path 'acd*' mode 0660 group operator  # CD devices
add path 'cd*' mode 0660 group operator  # CD devices
add path 'xpt*' mode 0660 group operator  # required for CD access
add path 'pass*' mode 0660 group operator  #  ----"----
add path 'da*' mode 0660 group operator  # SCSI-Disks, e.g. USB-Sticks
add path 'md*' mode 0660 group operator  # virtual FSs, e.g. for .img, .iso
add path 'usb/*' mode 0660 group operator   #virtualbox braucht das noch
add path 'label/*'  mode 0660 group operator   #user-mount von labeln mount/dev/label/<label>
add path 'usb/2.3.0' mode 0666 group saned
add path 'ugen2.3' mode 0666 group saned

pit@senyo ~:- > cat /etc/devfs.conf | sed '/^#/d' | grep .
link   cd0   cdrom
link   cd0   dvd
own  bpf* root:network
perm bpf* 0660
und da steht mir eigentlich schon zu viel drin. Die beiden Einträge mit group saned brauche ich, weil mein Scanner am USB-Port hängt und eben an genau dem bezeichneten. Da meine Drucker nicht am USB-Port hängen, sondern im Netzwerk sind, brauche ich da keine weiteren Einträge.

Ich bin sogar unsicher, ob das Drucken generell nicht auch für Nutzer funktioniert, die nicht mal in der Gruppe cups gelistet sind. Ich denke, dass das wohl so sein müsste. Man kann natürlich auch Nutzer ausschließen, aber generell will man ja so einen Dienst offen halten. er soll drucken, wenn was zum Drucken ankommt.

Außerdem sind die beiden Dienste ja auch sehr verschieden und es ist etwas unglücklich, Scannen und Drucken in einem Atemzug zu behandeln.
Zum Drucken ins Netzwerk (mit CUPS) braucht man eigentlich nur einen laufenden CUPS, einen passend eingerichteten Drucker und fertig. Wenn ich nun nicht sehr daneben liege.
Mit Scannen ist das deshalb nicht so einfach, weil die meisten Geräte dazu ja nicht über Netz erreichbar sind. Man bedient ja gerne den Scanner, an dem man arbeitet. (Deshalb habe ich mir auch einen alten USB-Scanner an meinen PC angeschlossen und nutze nicht mehr den über Netzwerk erreichbaren Scanner meiner Frau). Und dann ist es eigentlich wie immer, wenn man Geräte ansprechen und steuern möchte: man braucht dafür die geeigneten Rechte.
Hat man Drucker am USB (oder einem anderen Port), dann gilt das natürlich auch hier.
Und eben auch, wenn man Geräte als Nutzer anders als zum Drucken oder Scannen nutzen möchte.
 
Das mounten habe ich nur angesprochen, weil es in einem Thread ein Dauerthema über mehrere Wochen und Monate ist. Bei mir funktioniert es einfach, so wie es konfiguriert wurde. Ansonsten ist es immer das selbe, fragst Du 10 Leute, hast mehrere oder viele verschiedene Meinungen. Ich war auch der Meinung, das ich als User nicht in die Gruppe saned bräuchte. Aber das hat dann wohl xsane bei der Installation automatisch gemacht. Nach all dem Stress und Ärger der vergangenen Tage und Wochen brauchte ich etwas verläßliches, was auch als Vorlage einer Grundversorgung einer Konfiguration dienen sollte. Das habe ich jetzt erreicht und das war mir wichtig. Ein weiteres Feintuning ist in meinem persönlichen Einsatzbereich nicht zwingend erforderlich, denn es tut das, was es tun soll, es funktioniert einwandfrei. Leider wird das Thema CUPS im deutschen FreeBSD Handbuch etwas stiefmütterlich behandelt. Deshalb mußte ich mir Fremdwissen aneignen. Fremdwissen, dem ich vertraue. Und das Ergebnis gibt mir Recht, denn ich habe mein Ziel erreicht. Konfigurationen können ja, wie wir wissen, nicht in allen Teilen allgemeingültig sein, dafür ist die Hardwarearchitektur zu unterschiedlich. Jedenfalls habe ich meinen Weg hier dokumentiert, falls mal ein Ein- oder Umsteiger damit zu kämpfen hat, denn ich teile gerne meine Erfahrungen.
 
Deshalb mußte ich mir Fremdwissen aneignen. Fremdwissen, dem ich vertraue. Und das Ergebnis gibt mir Recht, denn ich habe mein Ziel erreicht.
Jedenfalls habe ich meinen Weg hier dokumentiert, falls mal ein Ein- oder Umsteiger damit zu kämpfen hat, denn ich teile gerne meine Erfahrungen.

OK.
Das will ich denn auch mal an dieser Stelle tun und zwar genau nur für Drucken auf Netzwerkdrucker mit CUPS aus FreeBSD 11.1
Aus einem bei mir vorhandenen memmstick-image habe ich auf einen USB-Stick ein FreeBSD frisch installiert und zwar nur das Basis System mit minimalem Ausbau. Also keinerlei Zusatzpakete ausgewählt, keine Grafik, nichts weiter, als nur FreeBSD.
Entsprechend wenig ist in der rc.conf und loader.conf:
Code:
pit@test:~ % cat /etc/rc.conf
keymap="de"
clear_tmp_enable="YES"
sendmail_enable="NONE"
hostname="test"
ifconfig_em0="DHCP"
sshd_enable="YES"
moused_enable="YES"
powerd_enable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="AUTO"
zfs_enable="YES"
cupsd_enable="YES"
Code:
pit@test:~ % cat /boot/loader.conf
kern.geom.label.disk_ident.enable="0"
kern.geom.label.gptid.enable="0"
vfs.zfs.min_auto_ashift=12
zfs_load="YES"
Es kam mir hier nicht auf CUPS an, ich will diesen Stick zu einem anderen Zweck und habe deshalb auch ZFS gewählt. Das mit dem CUPS steckte mir nun irgendwie in der Haut und da wollte ich das halt mal sehen.
Also installierte ich als allererstes nach einem Neustart:
Code:
root@test:/home/pit # pkg install cups cups-filters cups-pdf
cups-pdf, weil ich das für später auch noch nutzen kann, aktuell hätte ich das nun nicht gebraucht. Um cups zu administrieren, nahm ich lynx, also pkg install lynx. Dann muss der Dienst erst mal gestartet werden, die rc.conf von oben ist ja der Zustand jetzt, also nachdem alles manuell eingerichtet worden war. Zuvor stand da kein cupsd_enable="YES" und es hätte ja auch nicht wirken können. Deshalb also erst service cupsd start und dann ein lynx http://localhost:631 und zwar kann man damit alles einstellen, aber ich machte nur und nichts anderes als unter "Verwaltung" das Kreuz bei "Fernwartung zulassen" zu setzen. Das hätte man auch durch einen passenden Eintrag in der cupsd.conf bewirken können, aber ich traue mich das nicht. Die Datei ist wüst und unübersichtlich und schnell an falscher Stelle etwas geändert. Damit das übernommen wird, habe ich zur Sicherheit einen service cupsd restart abgesetzt.
Bisher habe ich also ein FreeBSD-System ohne Veränderung an irgendwelchen Gruppen oder devfs oder logins oder sonst was. Dann die Pakete zu cups installiert, an die ich mich erinnerte, einen Text-browser installiert, den Cups-Service auf Remote-Zugang ermöglicht und den dann neu gestartet. Nun kann ich aus meinem Rechner bequem die Cups Seite des test-Systems aufrufen, einfach über die IP-Adresse: https://192.168.1.156:631/admin in meinem Browser. Irgendwelche Zertifikate werden natürlich an-gemeckert und man muss dann eine Ausnahmeregel akzeptieren. Ich brauche aber keine Grafik auf dem Testrechner, um CUPS bequem über meinen gewohnten Browser zu konfigurieren und Drucker einzurichten.
Das machen vielleicht nicht viele Leute so. Für gewöhnlich baut man einen Desktop und der hat dann eh X drauf. Für mich war das nun zu unbequem und nicht nötig. Wer nur einen Printserver bauen möchte, kann das genauso machen.
Als ich nun einen meiner Drucker einrichten wollte, stellte ich aber fest, dass mein gewünschter und erprobter Treiber hier gar nicht dabei war.
Deshalb installierte ich gleich noch:
Code:
pkg install foomatic-filters foomatic-db foomatic-db-engine
und dies deinstalliert wieder die cups-filters.
Meinen gewünschten Treiber für den beabsichtigten Drucker konnte ich aber nun finden und so meinen Drucker einrichten.
Alles Gut?
Leider nicht, ich konnte nicht drucken, auch keine Testseite.
Die erste Installation von "pkg install cups cups-filters cups-pdf" hatte eine Liste von etwa 80 oder 90 Paketen installiert und mich kam das ungeheuerlich viel vor, so dass ich mir nicht vorstellen konnte, dass hier noch etwas fehlt. Trotzdem war es so. Ich musste gutenprint noch installieren, denn das bringt erst ein wichtiges Mime-Handler-file und auch die Testseiten zum Ausdruck in Cups.
Code:
pkg install gutenprint
...
Installed packages to be REMOVED:
   foomatic-filters-4.0.17_9

New packages to be INSTALLED:
   cups-filters: 1.16.0_2
   gutenprint: 5.2.13_1
...
Wie man sieht, bringt das wieder die cups-filters und deinstalliert die foomatic-filters, doch nicht die Treiber für meine Drucker, die ich haben wollte, weil sie eben erprobt sind.

Also, nochmal.
  • Installieren: cups und gutenprint und vielleicht noch zusätzliche Treiber für Drucker.
  • cupsd starten
  • Cups konfigurieren, also die Drucker über Webinterface einrichten.
  • Testdruck.
  • cupsd_enable="YES" in die rc.conf, damit es beim nächsten Mal automatisch gestartet wird.
  • Restart und Test.
Alles geht.
Mehr nicht, keine Gruppen angepasst, keine Rechte gesetzt usw.

Als einzigen Hinweis noch dies, was oft übersehen wird:
/usr/local/bin/lpr ist der "Cups-lpr", wer nur lpr aufruft, meint den alten lpr in /usr/bin/lpr.
Ich habe schon den alten lpr gelöscht und dann einen Link zum Cups-lpr gesetzt, um nicht der Gefahr einer Verwechselung anheim zu fallen. Diesmal habe ich einfach daran denken müssen. Dann kann nach Einrichtung der Drucker auch bequem als User von Konsole gedruckt werden. Ich hatte dazu noch rsync zusätzlich installiert, um mir ein paar Testdateien zu holen und das dann sozusagen live probiert und mich nicht auf den Ausdruck der Testseiten verlassen.
Mein Nutzer ist allerdings in operator und wheel eingetragen. Mit anderen Usern habe ich nichts probiert.

der Vollständigkeit halber noch alle installierten Pakete, die wie gesagt, fast alle automatisch mit den gezeigten mit installiert wurden:
pit@test:~ % pkg info -a
a2ps-4.13b_8 Formats an ASCII file for printing on a postscript printer
argyllcms-1.9.2_2 ICC compatible color management system
avahi-app-0.6.31_5 Service discovery on a local network
ca_root_nss-3.34.1 Root certificate bundle from the Mozilla Project
cairo-1.14.8_1,2 Vector graphics library with cross-device output support
colord-1.2.12 Manage color profiles to accurately color input/output devices
cups-2.2.3 Common UNIX Printing System
cups-filters-1.16.0_2 Additional backends, filters and other software for CUPS
cups-pdf-2.6.1_4 Virtual printer for CUPS to produce PDF files
curl-7.57.0 Command line tool and library for transferring data with URLs
damageproto-1.2.1 Damage extension headers
dbus-1.10.16_1 Message bus system for inter-application communication
dbus-glib-0.108 GLib bindings for the D-BUS messaging system
dri2proto-2.8 DRI2 prototype headers
enscript-a4-1.6.6_2 ASCII to PostScript filter
expat-2.2.1 XML 1.0 parser written in C
fixesproto-5.0 Fixes extension headers
fontconfig-2.12.1,1 XML-based font configuration API for X Windows
foomatic-db-20170521 Database for integrating printer drivers with common spoolers
foomatic-db-engine-4.0.12_1,2 Foomatic database engine
freetype2-2.8 Free and portable TrueType font rendering engine
gdbm-1.13_1 GNU database manager
gettext-runtime-0.19.8.1_1 GNU gettext runtime libraries and programs
ghostscript9-agpl-base-9.16_5 Ghostscript 9.x PostScript interpreter, base part
glib-2.50.2_6,1 Some useful routines of C programming (current stable version)
glproto-1.4.17 GLX extension headers
gmp-6.1.2 Free library for arbitrary precision arithmetic
gnome_subr-1.0 Common startup and shutdown subroutines used by GNOME scripts
gnutls-3.5.15 GNU Transport Layer Security library
gobject-introspection-1.50.0,1 Generate interface introspection data for GObject libraries
gsfonts-8.11_8 Standard Fonts for Ghostscript
gutenprint-5.2.13_1 Gutenprint Printer Drivers
indexinfo-0.2.6 Utility to regenerate the GNU info page index
jbig2dec-0.13 Decoder implementation of the JBIG2 image compression format
jbigkit-2.1_1 Lossless compression for bi-level images such as scanned pages, faxes
jpeg-turbo-1.5.2 SIMD-accelerated JPEG codec which replaces libjpeg
kbproto-1.0.7 KB extension headers
lcms2-2.8 Accurate, fast, and small-footprint color management engine
libICE-1.0.9_1,1 Inter Client Exchange library for X11
libSM-1.2.2_3,1 Session Management library for X11
libX11-1.6.5,1 X11 library
libXScrnSaver-1.2.2_3 The XScrnSaver library
libXau-1.0.8_3 Authentication Protocol library for X11
libXdamage-1.1.4_3 X Damage extension library
libXdmcp-1.1.2 X Display Manager Control Protocol library
libXext-1.3.3_1,1 X11 Extension library
libXfixes-5.0.3 X Fixes extension library
libXinerama-1.1.3_3,1 X11 Xinerama library
libXrandr-1.5.1 X Resize and Rotate extension library
libXrender-0.9.10 X Render extension library
libXxf86vm-1.1.4_1 X Vidmode Extension
libdaemon-0.14_1 Lightweight C library that eases the writing of UNIX daemons
libdrm-2.4.83,1 Userspace interface to kernel Direct Rendering Module services
libffi-3.2.1_1 Foreign Function Interface
libiconv-1.14_11 Character set conversion library
libidn-1.33_1 Internationalized Domain Names command line tool
libidn2-2.0.4 Implementation of IDNA2008 internationalized domain names
libijs-0.35_5 C library that supports plugin printer driver for Ghostscript
libnghttp2-1.26.0 HTTP/2.0 C Library
libpaper-1.1.24.4 Library providing routines for paper size management
libpciaccess-0.13.5 Generic PCI access library
libpthread-stubs-0.4 This library provides weak aliases for pthread functions
libtasn1-4.12 ASN.1 structure parser library
libunistring-0.9.7 Unicode string library
libunwind-20170113_1 Generic stack unwinding library
libxcb-1.12_2 The X protocol C-language Binding (XCB) library
libxml2-2.9.4 XML parser library for GNOME
libxshmfence-1.2_2 Shared memory 'SyncFence' synchronization primitive
lynx-2.8.8.2_6,1 Non-graphical, text-based World-Wide Web client
mesa-libs-17.1.10 OpenGL libraries that support GLX and EGL clients
mpage-2.5.6 Print multiple pages per sheet of paper
nettle-3.3 Low-level cryptographic library
nspr-4.17 Platform-neutral API for system level and libc like functions
nss-3.34.1 Libraries to support development of security-enabled applications
openjpeg-2.2.0 Open-source JPEG 2000 codec
p11-kit-0.23.8 Library for loading and enumerating of PKCS#11 modules
pciids-20170916 Database of all known IDs used in PCI devices
pcre-8.40_1 Perl Compatible Regular Expressions library
perl5-5.24.3 Practical Extraction and Report Language
pixman-0.34.0 Low-level pixel manipulation library
pkg-1.10.1 Package manager
png-1.6.34 Library for manipulating PNG images
polkit-0.113_5 Framework for controlling access to system-wide components
poppler-0.57.0 PDF rendering library
poppler-data-0.4.7 Poppler encoding data
poppler-glib-0.57.0 GLib bindings to poppler
poppler-utils-0.57.0_1 Poppler's xpdf-workalike command line utilities
python2-2_3 The "meta-port" for version 2 of the Python interpreter
python27-2.7.14 Interpreted object-oriented programming language
qpdf-6.0.0_1 Command-line tools for transforming and inspecting PDF documents
randrproto-1.5.0 Randr extension headers
readline-7.0.3 Library for editing command lines as they are typed
renderproto-0.11.1 RenderProto protocol headers
rsync-3.1.2_7 Network file distribution/synchronization utility
scrnsaverproto-1.2.2 ScrnSaver extension headers
spidermonkey170-17.0.0_7 Standalone JavaScript based from Mozilla 17-esr
sqlite3-3.20.1_1 SQL database engine in a C library
svgalib-1.4.3_7 Low level console graphics library
tiff-4.0.9 Tools and library routines for working with TIFF images
tpm-emulator-0.7.4_2 Trusted Platform Module (TPM) emulator
trousers-0.3.14_1 Open-source TCG Software Stack
xcb-util-0.4.0_2,1 Module with libxcb/libX11 extension/replacement libraries
xcb-util-renderutil-0.3.9_1 Convenience functions for the Render extension
xextproto-7.3.0 XExt extension headers
xf86vidmodeproto-2.3.1 XFree86-VidModeExtension extension headers
xineramaproto-1.2.1 Xinerama extension headers
xproto-7.0.31 X11 protocol headers
 
Danke @pit234a, sehr interessant, zeigt es doch, das viele Wege nach "Rom" führen. Was letztendlich zählt, ist ja der Erfolg. Offensichtlich gibt es den Königsweg nicht. Ich jedenfalls bin froh, das es jetzt funktioniert. Ich habe mich an Allison Nicole Reid gehalten, die wohl ein Profi ist:
Hier kannst Du nachlesen, was die schon alles gemacht hat:
https://cooltrainer.org/cv/
https://cooltrainer.org/cv/
Beeindruckend was? Aber auch hier im Forum gibt es Koriphäen, denen ich blind vertraue, dazu gehörst auch Du.
 
Aber auch hier im Forum gibt es Koriphäen, denen ich blind vertraue, dazu gehörst auch Du.
Um Gottes Willen!
Ich habe doch wirklich keine Ahnung, oder vielleicht eben nur das: nichts als Ahnung aber gar kein Wissen!

Von dem, was ich seit meiner Zeit mit FreeBSD hier im Forum gelernt habe und was ja beinahe die alleinige Grundlage meines Wissensschatzes ist, habe ich das allermeiste bereits wieder vergessen. Denn ich nutze das erlangte Wissen ja nicht. Bei mir gibt es immer ein Problem, das will ich lösen, oft schaffe ich es auch und dann ist gut und das Problem gegessen und das Wissen zur Lösung nicht mehr relevant für mich. Bei meiner Vorgehensweise benutze ich allerdings CP-N-Paste nur dann, wenn ich zumindest glaube, die Hintergründe auch verstanden zu haben. Deshalb dauern Lösungen bei mir auch ganz schön lange und es ist ein großer Unterschied zu dir darin, dass ich niemandem vertraue. Das ist eines meiner psychischen Defizite, die nicht in solch ein Forum gehören. Aber mein Credo ist ja, dass der Starke dem Schwachen helfe, dass die Rollen aber nicht für alle Zeiten festgelegt sind und der im Augenblick Schwache durchaus auch zum Starken werden kann. Niemand kann immer alles wissen. Jeder meint es immer gut (ein anderes meiner psychischen Defizite), aber niemand ist perfekt. Erst aus der Summe von Antworten und Ratschlägen entwickelt sich für mich dann ein Herangehen an eine Lösung für ein Problem, doch letztlich will ich selbst die Verantwortung dafür übernehmen, was ich denn da mache und eigene Entscheidungen auf Grundlage der erfahrenen Beratung treffen. Nicht selten sind meine eigenen Ideen furchtbar und führen zu nahezu dramatischen Fehlern. Daraus kann man lernen und deshalb rede ich darüber auch offen.
Bei allem was ich immer so sage und womit gerne auch aus meinen Erfahrungen Tips gebe, erfolgt das niemals aus einer erhabenen Position eines Wissenden. Ich versuche es eben oft Anderen zu helfen (noch so ein Defizit), so gut ich eben kann, weil ich mich nicht dafür schämen will, einfach geschwiegen zu haben. Dann schon lieber mit einem blöden Tip lächerlich gemacht.
 
Zum Drucken ins Netzwerk (mit CUPS) braucht man eigentlich nur einen laufenden CUPS, einen passend eingerichteten Drucker und fertig. Wenn ich nun nicht sehr daneben liege.

Hallo Pit,

wenn Du auf einen Printserver zugreifst, brauchst Du beim Client noch nicht einmal ein cups_enable="YES" in der /etc/rc.conf:
Es reicht eine /usr/local/etc/cups/client.conf mit:
Code:
NameServer <ip-adresse-des-printservers>:631

Wenn der Printserver in der /etc/hosts des Client eingetragen ist, geht statt der IP auch der Hostname des Printservers.

Ich war auch der Meinung, das ich als User nicht in die Gruppe saned bräuchte. Aber das hat dann wohl xsane bei der Installation automatisch gemacht.

Hallo Ralph,

bei mir ist das anders. Wenn ich sane plus xsane installiere, um auf meinen CanoScan 9000F Mark II zugreifen zu können, brauche ich als User nicht in der Gruppe saned zu stehen, und werde auch nicht automatisch durch die sane Installation dort eingetragen.
 
Hallo Ralph,

bei mir ist das anders. Wenn ich sane plus xsane installiere, um auf meinen CanoScan 9000F Mark II zugreifen zu können, brauche ich als User nicht in der Gruppe saned zu stehen, und werde auch nicht automatisch durch die sane Installation dort eingetragen.

Hallo Holger,

Du hast Recht, ich habe das gerade kontrolliert, den User ralph aus der Gruppe saned genommen, neu gestartet und er scannt auch so problemlos. Kann sein, das ich mich selbst in saned hinzugefügt habe, weil ich dachte, das könne ja nicht schaden. Xsane war es nicht, das war dann wohl eine Vermutung, weil mir das nicht mehr bewußt war bei all den Konfigurationsorgien.

Mein Laserdrucker Samsung ML-1510 hat schon einige Jahre auf den Buckel, aber er arbeitet noch einwandfrei. Ich glaube (ohne das jetzt zu wissen), das der garnicht netzwerkfähig ist. Aber das ist mir auch nicht wichtig, mein PC ist einerseits eine Insellösung, andererseits drucke ich sehr, sehr wenig, schon aus Gründen der Nachhaltigkeit. Aber trotzdem ist es ein gutes Gefühl, das er auch unter FreeBSD noch läuft, wenn es mal notwendig wird.

Mein Anliegen war aber ein ganz anderes. Ich wollte hinzulernen und wissen, wie denn die Netzwerkadresse des Printservers ermittelt wird. Kannst Du mir das verraten? Danke! Im Netz gibt es zu viele widersprüchliche Aussagen dazu, das meiste bezieht sich auf WIndows.
 
wenn Du auf einen Printserver zugreifst, brauchst Du beim Client noch nicht einmal ein cups_enable="YES" in der /etc/rc.conf
ja, obwohl es da auch Unterschiede geben kann, siehe nächsten Absatz.

wie denn die Netzwerkadresse des Printservers ermittelt wird.

Mit einem laufenden Cups kann man aber das WebInterface benutzen und dort dann auch die "automatische Suche" nach Druckern aktivieren. Wenn ich das recht erinnere, findet Cups(-Client) Freigaben anderer Cups(-Server) genauso, wie es Drucker im Netzwerk findet. Es lauscht jedenfalls auf die üblichen Ports und den eignen IPP-Service.
Es gibt auch "Printserver", die quasi nur ein Adapter sind und die Drucker-HW ans Netz bringt. Diese Dinger sind dann "Dumm" und mit Cups kann so ein Server auch gebaut werden. Dann brauchen die Clients ihre eigenen Treiber und es ist die Methode, die ich bevorzugt hatte. Denn dazu genügt es, bei einem Cups den Hacken für die "Freigabe des Druckers im Netz" zu setzen, während dieser eingerichtet wird und schon hat man einen einfachen (entfernten) Printserver gebaut.

Die Adressen seiner Drucker und Printserver im Netzwerk sollte man meiner Ansicht nach festlegen, kennen und nutzen.
Ich bin zu oft hereingefallen und musste viel suchen, wenn man hier dynamische Adressen vergibt und sich auf einen "Druckernamen" verlässt. Da sind auch Dinge, die ich bei der automatischen Konfiguration durch Cups immer ersetze. Es geht so weit, dass ein älterer Mac nach einem Update (mit neuem Cups) plötzlich nicht mehr drucken wollte und einen Tausch der HW empfahl, weil die nicht mehr unterstützt werde. Im Mac-Printer-Menü war daran auch nichts zu ändern. Im Cups-WebIf konnte ich schließlich statt des Namens eine IP vergeben, den alten Treiber benutzen und schließlich wieder auf dem Gerät ausdrucken.
Wenn man einen gekauften Printserver benutzt, gilt das natürlich auch. Bei den allermeisten Modellen kann die IP-Adresse festgelegt werden. Wenn nicht, fängt das Abenteuer an. Am einfachsten dürfte es sein, seinen DHCP-Server auszulesen und das passende Gerät zu finden, dann den DHCP-Server so zu setzen, dass er künftig nur noch eine einzige IP für dieses Gerät vergibt und diese dann benutzen.
Hat man darauf keinen Zugriff, bleibt einem nur das Suchen durch das ganze Netz. Also, man kann ja auch Glück haben und Cups findet den Server gleich, bzw dessen Freigaben. Ist das aber nicht so, heißt es ja im Trüben fischen. Da fängt man wohl am Besten mal mit fping(8) an und sieht nach, welche Adressen es überhaupt in seinem Netzwerk gibt. Die meisten davon kann man vermutlich zuordnen, so dass nur noch wenige zu testen übrig bleiben und die kann man dann (wenn es wirklich nur wenige sind) schnell mal mit nmap(1) ansehen und feststellen, ob sie Drucker-Ports geöffnet haben. Geht das nicht, hat man dabei keinen Erfolg, dann bleibt wohl nur der eher mühsame Weg über tcpdump(1) und Lauschen auf entsprechende Nachrichten. Alternativ geht da vielleicht wireshark (net/wireshark) ein wenig einfacher zu gebrauchen. Nutzt man avahi (net/avahi), gibt es da auch wieder einige Möglichkeiten. Wir hatten hier schon mal einen Thread, wo ich darüber aufgeklärt worden bin.

Mein Laserdrucker Samsung ML-1510 hat schon einige Jahre auf den Buckel, aber er arbeitet noch einwandfrei. Ich glaube (ohne das jetzt zu wissen), das der garnicht netzwerkfähig ist.
Was ich oben beschrieb war ausdrücklich nur für Drucker im Netzwerk gedacht.
Hängen sie HW-mäßig am PC direkt, muss die entsprechende Schnittstelle für einfache Nutzer zugänglich gemacht werden. Auch Cups ist so ein einfacher Nutzer.
Für mich war "immer schon" Drucken über Netzwerk das Mittel der Wahl. Wir wohnten hier zu fünft und Kinder in der Ausbildung mit wenigstens 20.000 Seiten im Jahr. Jedem seinen eigenen Drucker hinzustellen, wäre mir zu viel gewesen und bei diesen Zahlen rechneten sich Laser auch schon vor Jahren, als die noch teurer waren.
Übrigens ist das Drucken mit dem alten LPD (lpr) gerade bei PostScript-fähigen Druckern meiner Ansicht nach noch einfacher und ich habe es nur deshalb nicht mehr in Benutzung, weil es nicht auf allen PCs genutzt werden konnte. Cups ist eben auch bei Macs vorhanden.
 
Danke @pit234a, sehr ausführlich und präzise, wie immer. Ist ja ganz einfach .... ;) Nee mal Spaß beiseite, natürlich interessiert mich auch Netzwerktechnik. Das ist ja keine Hexerei, nur gebraucht habe ich es in meinem Arbeitszimmer nie. Aber in kleinen Firmen mit 4 oder 4 Mitarbeitern rechnet sich schon ein Printserver. Hab ein wenig recherchiert, damit ich wenigstens über die Grundzüge Bescheid weiß. Neu herumexperimentieren werde ich jetzt nicht mehr, weil ja alles läuft. Da ich den KDE Desktop verwende, kann ich unter Systemeinstellungen - Drucker, Druckaufträge, Wartung und Konfiguration aller Drucker komfortabel vornehmen, brauche daher nicht ein Mal mehr das Webinterface von CUPS in einem Browser. Das mit der Netzwerkfreigabe habe ich mir auch schon angesehen, aber wie gesagt, bei mir funktioniert jetzt endlich alles reibungslos und gut ist es.
 
rechnet sich schon ein Printserver
Nicht wirklich.
Drucker sind heute schnell und mit ausreichend RAM bestückt, da braucht man keine Printserver mehr, um Aufträge zu puffern. Drucker mit Netzwerkanschluss kosten nicht kaum mehr und Wlan gibt es für unter 20€ mehr in vielen Modellen. Da rechnet es sich nicht, eigens noch einen Printserver zu betreiben. Einfach einen Drucker nehmen, der direkt Netzwerkfähig ist und gut ist.

In großen Firmen kann die Situation sehr schnell unübersichtlich werden. Ich kenne Unternehmen mit tausenden von Druckern und das sind dann spezielle Herausforderungen, die auch nicht mehr mit einem einfachen Server zu lösen sind.

Lasst mich bei der Gelegenheit mal eine kleine Geschichte loswerden, mit der Gefahr, leicht ins OT zu driften.
Eines unserer Produkte benutzte ein altes Unix (VENIX) und lief auf einem schwachen PC (selbst seinerzeit schwach) mit wenig Ressourcen. Unglücklicherweise hatten die Entwickler einen LPD etabliert und gestartet.
Mit wachsender Anzahl von Teilnehmern im Netz kamen auch immer mehr Windows-PCs hinzu und damals zumindest durfte dann ein Nutzer auch Drucker einrichten. Ein schlauer Nutzer hatte dann unseren LPD als Drucker gefunden, sich gefreut und munter darauf gedruckt.
Leider spammte das unsere Partition voll und brachte schließlich das Gerät quasi vollkommen zum Stehen. Lästige Sache und nicht einfach zu lösen, weil ich nicht mal mehr einloggen konnte, um dem Fehler nachzugehen. Gut, dass ich mich mit "Computern nicht auskenne", wie mein damaliger Chef überzeugt war, weil ich kein Windows nutzen wollte. Die offizielle Lösung wäre nämlich die Neuinstallation der SW plus Verlust der aktuellen Daten gewesen UND der nächste Einsatz schon vorprogrammiert gewesen, weil der Windows-Client ja nicht aufgehört hätte mit seinen Druckereien.
Das erzähle ich nun nicht, um meine Heldentaten zu rühmen, obwohl es mir schon gut getan hatte, andere Lösungen finden zu können.
Ich möchte zeigen, wie unübersichtlich in großen Netzen die Situation sehr schnell werden kann und dass es nicht unbedingt vorteilhaft ist, wenn jeder mit irgendwelchen Automatismen entscheidende Dienste selbst verwaltet, die Gesamtkonstellation aber gar nicht kennt oder nicht durchblickt.

Für mich ist klar, dass es in einem Netzwerk einen Master of Disaster geben muss, der die Adressen verteilt und weiß, welcher Dienst von wem zur Verfügung gestellt wird und wer das dann nutzen darf. Es kann natürlich auch einen freien Bereich von Adressen geben, doch den sollte man eben auch in gewisse Bahnen lenken.
Drucker oder Server im Netz, sollten für mich immer unveränderliche, feste Adressen haben, oder einem klugen DNS unterliegen. Für weniger als 20 Adressen würde ich keinen DNS aufsetzen, das ist auch so einfach überschaubar.
 
Habe mich anders ausgedrückt, als das, was ich meinte. Printserver war falsch, ich meinte einen Drucker im Netzwerk freizugeben für mehrere Arbeitsplatze. Wenn das auch falsch ist, bitte korrigiren....
 
Ich wollte hinzulernen und wissen, wie denn die Netzwerkadresse des Printservers ermittelt wird. Kannst Du mir das verraten?

Aus Gründen der Fehlervermeidung stimme ich hier pit zu und vergebe den Geräten immer und ausnahmslos feste IP-Adressen aus meinem Heimnetz, die ich mit CUPS dann auch anspreche.

Bei Gebrauchtgeräten, die kein eigenes Display und keine eigene Steuerung zur IP-Einstellung haben, wirds schwieriger. Bei Brother z.B. kann man 3x schnell die GO-Taste drücken, dann druckt er seine Einstellungen aus und man hat die IP und Subnetz, dann kann mans nach seinen Bedürfnissen umstellen.
Oder eben der klassische Reset, sofern ein solcher Knopf vorhanden ist und die Kiste per DHCP die IP zieht. Dann kann man auf dem Router gucken und kommt dann darüber auf die Oberfläche des Gerätes.
 
Zurück
Oben