Netzwerkdrucker cups-lokal ? ipp://server.local:631 ?

Hallo,

ich habe überall dieselben Netzwerkdrucker - aber einer macht Probleme. Man kann vom Client aus nicht auf ihn drucken. Und das sieht dann minutenlang so aus:

Das liegt wohl an der falschen Einstellung:
ipp://server.local:631/printers/361-hplj2300

Vom CUPS-Server-Frontend aus funktioniert der Testseitendruck.

Stellt man am Client händisch die Einstellung um (als linuxadmin) auf den korrekten Wert
ipp://10.16.1.1:631/printers/361-hplj2300
so funktioniert der Drucker am Client

Man kann auch in der Schulkonsole die Raumzuweisung für den Drucker verändern (einen Raum hinzufügen) und dann funktioniert der Drucker.

Leider aber nicht auf Dauer. Schon bald steht wieder der falsche Wert in den Einstellungen.

Hat jemand einen Tipp?

Gruß
Stefan

push…

Empfielt es sich den Drucker zu löschen und neu anzulegen unter gleichen oder unter anderem Namen, vielleicht?

Gruß
Stefan

Hallo Stefan,

wie werden die Drucker bei Dir auf dem Client eingerichtet?
Mit cups-browsed (so machen wir es) oder kopiert postsync eine clientspezifische printer.conf?

Wenn ich Deine Blidschirm-Photos aus dem CUPS-Webinterface auf server und aus den Systemeinstellungen auf dem Linux-Client sehe, vermute ich, dass Du den Drucker von server aus immer erreichst, die Clients sich jedoch selbstständig zerkonfigurieren.

Wer macht bei Dir DNS? ipfire oder linuxmuster?
Heißt die DNS-Domäne bei Euch wirklich local (default beim TfK-Schulrouter) oder linuxmuster-net.lokal (default bei linuxmuster? Was liefert “nslookup server.local” auf dem Client? So wie es aussieht, liegt der Hase hier im Pfeffer …

Hier einige Stellen zum weiterlesen
http://www.linuxmuster.net/wiki/anwenderwiki:linuxclient:defaultcloop_14.04#cups_-_browsed
http://www.linuxmuster.net/wiki/entwicklung:linuxclient:linuxmuster-client-extras?s[]=standarddrucker#anmeldescript_set-default-printer

Gruß Jürgen

Kein Postsync-Anpassung, also ist es cups-browsed.[quote=“j.engeland, post:3, topic:930”]
Wenn ich Deine Blidschirm-Photos aus dem CUPS-Webinterface auf server und aus den Systemeinstellungen auf dem Linux-Client sehe, vermute ich, dass Du den Drucker von server aus immer erreichst, die Clients sich jedoch selbstständig zerkonfigurieren.
[/quote]

Ja, genau.

Die Links kenne ich und habe da nix zu meinem Problem gefunden. set-default-printer läuft bei mir übrigens problemlos.

Wie bekomme ich das raus?

Nein.

sen@361-p02los ~ $ nslookup server.local
Server: 127.0.1.1
Address: 127.0.1.1#53

** server can’t find server.local: NXDOMAIN

und…

sen@361-p02los ~ $ nslookup server.linuxmuster-net.lokal
Server: 127.0.1.1
Address: 127.0.1.1#53

Name: server.linuxmuster-net.lokal
Address: 10.16.1.1

Ich lösche den Drucker jetzt mal und lege ihn neu an.

Gruß
Stefan

So - Drucker neu angelegt unter leicht verändertem Namen.
Auch in der SK bei Hosts den namen korrigiert und bei Drucker die Raumzuweisung erledigt.

Bis jetzt geht es - abwarten.

Ich habe aber noch was interessantes entdeckt (Linux Mint 17 Xfce):

Rufe ich das Programm “Drucken” (system-config-printer) auf, so kann man unter ‘Server - Verbinden’ zwei Einstellungen auswählen:

  1. /var/run/cups/cups.sock - das ist ausgewählt
  2. 10.16.1.1

    Option 2. sollte aber wohl ausgewählt sein!!!
    Somit erkärt es sich auch, dass die Richtlinen (z.B. abort-job), die ich auf dem Server vorgegeben habe, nicht greifen. Diese sind nämlich im Programm “Drucken” unter den Eigenschaften eines Druckers zu ersehen und ändern sich erst auf meine serverseitige EInstellung, wenn ich auf Option 2 (10.16.1.1) umstelle!

Wie vorgehen? Als Linuxadmin umstellen und Image verteilen?

Gruß
Stefan

Hallo Stefan,

wenn Du Deine Drucker mit cups-browsed zuverlässig finden willst, darf
im Image kein lokaler Drucker bereits eingetragen sein (außer vielleicht
dem PDF-Drucker)!
Vergess ich auch gern mal beim Image erstellen :wink:

Wurde ein USB-Drucker automatisch erkannt, sucht cups-browsed ebenfalls
nicht mehr - was für mich Sinn macht.

Gruß Jürgen

Hallo Jungs,

j.engeland:

Heißt die DNS-Domäne bei Euch wirklich local

Nein.

j.engeland:

Was liefert "nslookup server.local" auf dem Client?

sen@361-p02los ~ $ nslookup server.local
Server: 127.0.1.1
Address: 127.0.1.1#53

** server can't find server.local: NXDOMAIN

… da muss man mal in die Gechichte gehen: Apple kaufte vor ca. 7 Jahren
cups auf und seit dem ist die Entwicklung haptsächlich auf Apple
gemünzt: der Rest ist denen egal.
So setzen sie dann auch gerne eigene Vorstellungen rücksichtslos um:
also spricht cups im lokalen Netz immer mit .local.
Deine Cleints müssen .local korrekt auflösen, damit cups Reibungslos
funktioniert.
deswegen müßen sie in der /etc/hosts eine Zeile haben mit:

Zu diesem Zweck habe ich unter
/var/linbo/linuxmuster-client/trusty/common/etc/
eine Datei
hosts
liegen mit diesem INhalt:


# Diese Datei wird per postsync gepatcht. Zu bearbeiten ist sie auf dem Server. # Pfad: /var/linbo/linuxmuster-client/trusty/common/etc/hosts # HOSTNAME wird im Postsyncskript mit dem echten Namen gepatcht 127.0.0.1 HOSTNAME

#Die nächste Zeile enthält die Hostnamen so, wie sie auf dem Server eingetragen sind…
#SERVERIP server.linuxmuster.local server

damit CUPS zufrieden ist, muss noch diese Zeile hier dazu:

#SERVERIP server.lokal server.local


#SERVERIP wird per postsync durch 10.16.1.1 ersetzt.
Ebenso wird HOSTNAME durch 10.16.1.1 ersetzt.
(ja: einmal mit # einmal ohne …).

LG

Holger

Hallo,

hier die /etc/hosts von einem Client:

127.0.0.1	localhost
127.0.1.1	Client002-base

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Hoffentlich hilft’s…
Gruß
Stefan

P.S: die hässlichen Formatdarstellungen von Dateiinhalten ( z.B. durch # am Zeilenanfang) hier in Discourse kann man vermeiden, wenn man den Text als Zitat oder Vorformatierten Text formatiert:

Hallo Holger,

in meine /etc/hosts ist offenbar noch nicht angepasst an LMN. Da sollte ich wohl doch das universelle postsync-Skript mal einrichten - oder ?

Kann es sein, dass auch weitere sporadische Probleme an /etc/hosts liegen könnten?

  1. Manchmal ist nach dem Login die Bedienung so gut wie nicht möglich: Alle Eingaben sind extrem verlangsamt - v.a. Maus ruckelt nur noch über den Bildschirm.
    Das haben wir mal telefonisch besprochen. Ich konnte das Problem nie eingrenzen.

  2. Netzwerkverbindung wird nicht wieder hergestellt
    Netzwerkverbindung wird nicht wiederhergestellt

  3. Lokale Drucker lassen sich nur schlecht bis gar nicht verwalten:
    USB Drucker an lokalen Maschinen

Gruß
Stefan

P.S:
Beim Erstellen meines Linux-Mint-Xfce-Images habe ich die Anpassung wohl nicht umgesetzt.
Die Anleitungen im Wiki bzw. Dokumentation zum Defaultcloop waren bei beim Erstellen eines eigenen Linux-Images sehr hilfreich. Aber die Stelle mit /etc/hosts kann man leicht übersehen, denn es gibt mehrere Artikel, in denen auf /etc/hosts nur in einem kurz eingegangen wird unter Hinweis auf das universelle postsync-Skript:
https://www.linuxmuster.net/wiki/dokumentation:handbuch:clients:ubuntu.defaultcloop
Da ich das universelle postsync-Skript bislang nicht verwende, war für mich die Anpassung von /etc/hosts nicht klar.

Weitere Artikel zum Defaultcloop ohne Hinweise auf /etc/hosts:
https://www.linuxmuster.net/wiki/anwenderwiki:linuxclient:defaultcloop_14.04
https://www.linuxmuster.net/wiki/entwicklung:linuxclient:start

Hallo Stefan,

hier die /etc/hosts von einem Client:

|127.0.0.1 localhost 127.0.1.1 Client002-base # The following lines are
desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0
ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2
ip6-allrouters|

nun müssen wir erst mal feststellen, ob der HOSTNAME in allen den
stimmt: den kann der DHCP Client des Rechners nämlich auch vom DHCP
bekommen und in die Hosts eintragen.
Sollte das funktionieren, was bei Ubuntu seit 14.04 leider nicht mehr
funktioniert, dann brauchst du den postsync nicht.

Um das heraus zu bekommen mußt du nun auf wenigstens 2 Cleints in die
hosts schauen:

  1. ist der Hostnamen unterschiedlich in dieser Zeile:
    127.0.1.1 Client002-base
  2. stimmt er mit dem Rechnernamen überein?

Falls beides Ja ist, dann reicht ein Einfügen dieser Zeilen in die hosts
auf dem Client und erstellen eines Images:


10.16.1.1 server.linuxmuster.local server

damit CUPS zufrieden ist, muss noch diese Zeile hier dazu:

10.16.1.1 server.lokal server.local


Falls der HOstname nicht stimmt schreib, dann schicke ich dir eine
postsync und eine Anleitung, wo die VOrlagenhosts Datei hin muss.

LG

Holger

Hallo Holger,

Nein.

Nein.

Mint 17 beruht auf Ubuntu 14.04.

Eine postsync-Skript + Vorlagendatei von Dir wären prima!

Gruß
Stefan

P.S: Hier die Daten:

Clientname: edv-p01los
127.0.1.1 Client002-base

Clientname: adm-p01iii
127.0.1.1 Client002-base

Clientname: phy-p04lss
127.0.1.1 Client002-base

Hallo Stefan,

1) ist der Hostnamen unterschiedlich in dieser Zeile:
127.0.1.1 Client002-base

Nein.

baumhof:

2) stimmt er mit dem Rechnernamen überein?

Nein.

baumhof:

Sollte das funktionieren, was bei Ubuntu seit 14.04 leider nicht mehr
funktioniert, dann brauchst du den postsync nicht.

Mint 17 beruht auf Ubuntu 14.04.

Eine postsync-Skript + Vorlagendatei von Dir wären prima!

hast du die Verzeichnisstrucktur:

/var/linbo/linuxmuster-client/trusty/common/

auf deinem Server?

LG

Holger

Hallo Stefan,

hier ist die Datei, die du nach
/var/linbo/linuxmuster-client/trusty/common/etc/hosts
legst mit den Rechten:
-rw-r–r-- 1 root root 459 Jul 18 2014 hosts


# Diese Datei wird per postsync gepatcht. Zu bearbeiten ist sie auf dem
Server.
# Pfad: /var/linbo/linuxmuster-client/trusty/common/etc/hosts
# HOSTNAME wird im Postsyncskript mit dem echten Namen gepatcht
127.0.0.1    HOSTNAME

#Die nächste Zeile enthält die Hostnamen so, wie sie auf dem Server
eingetragen sind...
#SERVERIP server.linuxmuster.local server
# damit CUPS zufrieden ist, muss noch diese Zeile hier dazu:
#SERVERIP  server.lokal server.local

deine Datei /var/linbo/.cloop.postsync
sollte dann diesen Code Teil enthalten:

    # hostname in /etc/hosts patchen
    sed -i "s/HOSTNAME/$HOSTNAME/g" /mnt/etc/hosts
    sed -i "s/#SERVERIP/$SERVERIP/g" /mnt/etc/hosts

die Verzeichnisstrucktur erhälst du am einfachsten, wenn du dir ein
Defaultcloop herunterlädst: das bringt die postsync Datei und die
Verzeichnisstrucktur, siehe:

http://docs.linuxmuster.net/de/latest/howtos/linuxclients/cloudclient.html

VIele Grüße

Holger

Hallo Holger,

Danke!

Ich kann ja aber wahrscheinlich auch das gesamte Universelle postsync-Skript für Linux statt dem Code-Teil verwenden - oder?
http://www.linuxmuster.net/wiki/anwenderwiki:linbo:postsync_scripte:linux_universalscript

Dann könnte ich nämlich auch die ssh-keys so auf die Clients verteilen.

Gruß
Stefan

Hallo Stefan,

Ich kann ja aber wahrscheinlich auch das gesamte Universelle
postsync-Skript für Linux statt dem Code-Teil verwenden - oder?
http://www.linuxmuster.net/wiki/anwenderwiki:linbo:postsync_scripte:linux_universalscript

Dann könnte ich nämlich auch die ssh-keys so auf die Clients verteilen.

klar.
Das script kommt beim defaultcloop holen gleich mit.

LG

Holger

Hallo,

Das so herunter geladene Skript (trusty) funktioniert ohne irgendwelche Anpassungen bei mir.
Allerdings unterscheidet es sich doch recht stark von dem im Wiki (postsync.sh)
http://www.linuxmuster.net/wiki/anwenderwiki:linbo:postsync_scripte:linux_universalscript

Das hat bei mir erst einmal für Verwirrung gesorgt, als ich die Skripte durchgesehen habe.

Gruß
Stefan

P.S: Hier das herunter geladene Skript (trusty):

echo "##### POSTSYNC BEGIN #####" 
LOG=/mnt/var/log/postsync.log
echo "##### POSTSYNC BEGIN #####" >  $LOG
NOW=$(date +%Y%m%d-%H%M)
echo $NOW | tee -a $LOG
# IP-Adresse des Servers
SERVERIP=$(nslookup dummy 2> /dev/null | head -n 1 | awk -F: '{print $2}' | sed "s/\s*//g")
# Die Hostgruppe des aktuellen Rechners
HOSTGROUP=$(hostgroup) 
# Raum feststellen. Dieses Skript geht davon aus
# dass die Rechner Namen der Form
# raumname-hostname haben, also z.B. cr01-pc18
RAUM=${HOSTNAME%%-*}
# wenn der string leer ist, raum auf unknown setzen
if [ "x${RAUM}" == "x" ]; then 
    RAUM="unknown"
fi
# UVZ für die Patches auf dem Server. Mit dieser Variablen 
# kann man verschiedene Patches, z.B. für unterschiedliche
# Linux-Versionen bereitstellen.
# Wenn man hier $HOSTGROUP einträgt, erhält jede Rechnerklasse 
# ein eigenes Patchklassenverzeichnis auf dem Server.
# Damit kann man verschiedene Patchklassen mit derselben cloop-Datei
# bedienen, wenn man das benötigt.
PATCHCLASS="trusty"
# Das Verzeichnis, in dem die Serverpatches
# im lokalen Clientcache synchronisiert werden.
PATCHCACHE=/linuxmuster-client/serverpatches
echo "" | tee -a $LOG
echo "Hostname:      ${HOSTNAME}" | tee -a $LOG
echo "Raum:          ${RAUM}" | tee -a $LOG
echo "Patchcache:    ${PATCHCACHE}" | tee -a $LOG
echo "Hostgruppe:    ${HOSTGROUP}"   | tee -a $LOG
echo "Patchclass:    ${PATCHCLASS}" | tee -a $LOG
echo "" | tee -a $LOG
# -----------------------------------------
# Patchdateien auf das lokale Image rsyncen
# ----------------------------------------- 
echo " - getting patchfiles" | tee -a $LOG
# RAUM     -> Raumname
# HOSTNAME -> Rechnername
# Verzeichnis anlegen, damit es sicher existiert
mkdir -p /cache/${PATCHCACHE}
rsync --delete --progress -r "${SERVERIP}::linbo/linuxmuster-client/${PATCHCLASS}" "/cache/${PATCHCACHE}" | tee -a $LOG
echo " - patching local files"  | tee -a $LOG
# common: Bekommen alle clients der Patchklasse
# files
if [ -d /cache/${PATCHCACHE}/${PATCHCLASS}/common ]; then 
    echo "   - patching common to /mnt" | tee -a $LOG
    cp -ar /cache/${PATCHCACHE}/${PATCHCLASS}/common/* /mnt/ | tee -a $LOG
fi
# tarpacks
if [ -d /cache/${PATCHCACHE}/${PATCHCLASS}/common/tarpacks ]; then
  echo "   - unpacking tarpacks from common/tarpacks to /mnt" | tee -a $LOG
  for pack in /cache/${PATCHCACHE}/${PATCHCLASS}/common/tarpacks/*; do
     echo "     - unpacking: $pack" | tee -a $LOG
     tar xvzf $pack -C /mnt | tee -a $LOG
  done
fi
# Raum: Nur die Clients des Raums
# files
if [ -d /cache/${PATCHCACHE}/${PATCHCLASS}/${RAUM} ]; then 
    echo "   - patching ${RAUM} to /mnt" | tee -a $LOG
    cp -ar /cache/${PATCHCACHE}/${PATCHCLASS}/${RAUM}/* /mnt/ | tee -a $LOG
fi
# tarpacks
if [ -d /cache/${PATCHCACHE}/${PATCHCLASS}/${RAUM}/tarpacks ]; then
  echo "   - unpacking tarpacks from ${RAUM}/tarpacks to /mnt" | tee -a $LOG
  for pack in /cache/${PATCHCACHE}/${PATCHCLASS}/${RAUM}/tarpacks/*; do
     echo "     - unpacking: $pack" | tee -a $LOG
     tar xvzf $pack -C /mnt | tee -a $LOG
  done
fi
# Host: Nur der Rechner
# files
if [ -d /cache/${PATCHCACHE}/${PATCHCLASS}/${HOSTNAME} ]; then 
    echo "   - patching ${HOSTNAME} to /mnt"  | tee -a $LOG
    cp -ar /cache/${PATCHCACHE}/${PATCHCLASS}/${HOSTNAME}/* /mnt/ | tee -a $LOG
fi
# tarpacks
if [ -d /cache/${PATCHCACHE}/${PATCHCLASS}/${HOSTNAME}/tarpacks ]; then
  echo "   - unpacking tarpacks from ${HOSTNAME}/tarpacks to /mnt" | tee -a $LOG   
  for pack in /cache/${PATCHCACHE}/${PATCHCLASS}/${HOSTNAME}/tarpacks/*; do
     echo "     - unpacking: $pack" | tee -a $LOG
     tar xvzf $pack -C /mnt | tee -a $LOG
  done
fi
# Hook, um eigene Skripte auszuführen
if [ -d /mnt/postsync.d ]; then
    for SCRIPT in /mnt/postsync.d/*
    do
        chmod 755 $SCRIPT
        echo "Executing: $SCRIPT" | tee -a $LOG
        #$SCRIPT > /dev/null 2>&1
        $SCRIPT | tee -a $LOG
        echo " ...done." | tee -a $LOG
    done
    rm -rf /mnt/postsync.d
fi
# wenn es /mnt/tarpacks gibt - löschen
rm -rf /mnt/tarpacks
# Zeitstempel letzter sync hinterlegen
echo $NOW > /mnt/lastsync
echo "##### POSTSYNC END #####" | tee -a $LOG

Und noch was:
Wenn man das postsync-Skript mit den trusty-client zusammen herunter lädt, wie in der Doku beschrieben,
http://docs.linuxmuster.net/de/latest/howtos/linuxclients/cloudclient.html
braucht man die Datei /var/linbo/linuxmuster-client/trusty/common/etc/hosts nicht anlegen. Das Skript schreibt /etc/hosts wohl selbst neu.

Gruß
Stefan

Stimmt wohl doch nicht!!

Gruß
Stefan

Hallo,

ich hatte Probleme mit dem herunter geladenen universellen-postsync-Skript für trusty (s.o), da in /etc/hosts HOSTNAME und #SERVERIP nicht gepatcht wurden.

Das Hinzufügen dieser Zeilen im postsync nach dem universellen-postsync-Skript brachte die Lösung:

# hostname in /etc/hosts patchen
    sed -i "s/HOSTNAME/$HOSTNAME/g" /mnt/etc/hosts
    sed -i "s/#SERVERIP/$SERVERIP/g" /mnt/etc/hosts

Danke an Holger für den Support!

Gruß
Stefan