Skip to content

NAS - Cups & Sane

Linux
  • Mal wieder mit einem alten Thema beschäftigen. Cups - Raspberry als Druckdaemon

    Eigentlich unnötig bei mir zu Hause, aber ab und zu kann man das doch gebrauchen. Und da ich ja mit dem NAS ein Gerät hier rumstehen habe, was sich fast nur langweilt, kann man dem ja ein paar Aufgaben übertragen. Ich habe eine S/W Multifunktionsdrucker von Samsung Typ SCX-3205 hier stehen.

    Der Druckdaemon CUPS ist schon installiert, damit wir Zugriff aufs Webinterface bekommen muss man in der Konfig-Datei was einstellen.

    nano /etc/cups/cupsd.conf
    

    Inhalt der Datei

    <Location />
     # Allow remote administration...
     Allow 192.168.3.213
     Order allow,deny
    </Location>
    
    <Location /admin>
     # Allow remote administration...
     Allow 192.168.3.213
     Order allow,deny
    </Location>
    

    Um den Remote-Zugriff zu ermöglichen, fügt man in der Konsole folgendes ein.

    cupsctl --remote-admin
    

    Danach solltet ihr das Webinterface mittels

    https://192.168.X.XXX:631
    

    erreichen.

    Wenn man nach Userdaten gefragt wird, gibt man den Rootaccount des NAS an.

    Nun wird der Drucker hinzugefügt, ich verweise noch mal auf den Artikel Cups - Raspberry als Druckdaemon, dort habe ich das schon mal erklärt. Was dort aber fehlt ist, was macht man wenn der Drucker nicht in der Auswahlliste erscheint? Dann braucht man den Linuxtreiber für das entsprechende Modell. Bei meinem Modell kein Problem, kann ich die Datei doch einfach runterladen. Die Datei muss dann ausgepackt werden.

    tar zxvf uld_v1.00.36_00.91.tar.gz
    

    Dann in den Ordner uld wechseln

    cd uld
    

    Dann den Treiber installieren.

    ./install.sh
    

    Danach ein paar Eingaben machen und der Treiber ist installiert. Nun kann man das richtige Druckermodell auswählen. Erledigt.

    Tipp

    Damit das bei mir alles richtig funktionierte, habe ich die Rechner einmal komplett neugestartet.

    Auf dem Client taucht jetzt der freigegebene Drucker automatisch auf, diesen auswählen und als Standard markieren. Testseite drucken und fertig.

    Da mein Drucker auch scannen kann, kam ich auf die Idee das auch mal auszuprobieren. Ergebnis, kein Scanner gefunden 😞 Google brachte mich dann relativ schnell ans Ziel. Dafür gibt es unter Linux das Programm Sane. Sane ist auf dem NAS schon installiert. Für die entsprechende Konfiguration verweise ich mal auf

    https://wiki.debian.org/SaneOverNetwork
    

    Einstellungen wie in der Anleitung vorgenommen, wollte aber nicht. Der Tipp weiter oben, hat auch hier geholfen 😉

    Wichtig. Auf dem NAS

    nano /etc/sane.d/saned.conf
    

    Inhalt

    ## Access list
    # A list of host names, IP addresses or IP subnets (CIDR notation) that
    # are permitted to use local SANE devices. IPv6 addresses must be enclosed
    # in brackets, and should always be specified in their compressed form.
    #
    # The hostname matching is not case-sensitive.
    
    #scan-client.somedomain.firm
    192.168.3.1/24
    #[2001:db8:185e::42:12]
    #[2001:db8:185e::42:12]/64
    

    Die Rechner/Netzwerke freigeben, die Scannen dürfen. Danach Sane durchstarten.

     /etc/init.d/saned restart
    

    Eine sehr nette Anleitung mit ein paar weiterführenden Tipps findet man auf folgender Seite
    http://mein.homelinux.com/wiki/dienste/sane

    Client-Konfiguration

    Auf dem Client muss in der Datei /etc/sane.d/net.conf das Ziel angegeben werden.

    nano /etc/sane.d/net.conf
    

    Der Inhalt des Files sieht wie folgt aus:

    # This is the net backend config file.
    
    ## net backend options
    # Timeout for the initial connection to saned. This will prevent the backend
    # from blocking for several minutes trying to connect to an unresponsive
    # saned host (network outage, host down, ...). Value in seconds.
    # connect_timeout = 60
    
    ## saned hosts
    # Each line names a host to attach to.
    # If you list "localhost" then your backends can be accessed either
    # directly or through the net backend. Going through the net backend
    # may be necessary to access devices that need special privileges.
    # localhost
    192.168.3.xxx #IP-Adresse NAS
    

    Danach sucht der Client den Scanner auch an der richtigen Adresse!

    Fazit

    Mein nicht netzwerkfähiger Drucker hängt nun mittels USB am NAS und stellt seine Dienste mittels CUPS und SANE im lokalen Netzwerk zur Verfügung. Recht praktisch wenn man gelegentlich was vom Notebook ausdrucken oder scannen möchte. Da das NAS hier sowieso 24/7 unter Dampf ist, bot sich das an es so einzurichten.

  • Nextcloud - Update auf 28.0.2

    Nextcloud
    2
    0 Stimmen
    2 Beiträge
    94 Aufrufe
    FrankMF

    Für den, der sich alle Änderungen ansehen möchten -> https://github.com/nextcloud/server/releases

  • Python & Redis-Datenbank

    Verschoben Linux
    3
    0 Stimmen
    3 Beiträge
    94 Aufrufe
    FrankMF

    Heute dann die nächste Herausforderung. Mein JSON soll so aussehen, damit ich das entsprechend erweitern kann.

    Stocks {0: {'stockname': 'Deutsche Telekom Aktie', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 100}, 1: {'stockname': 'Henkel', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 50}}

    Die Daten sollen wie oben schon ausprobiert, in einer Redis Datenbank liegen. So weit auch kein großes Problem. ABER, der Zugriff auf diese Daten war dann meine nächste Hürde 🙂

    Ok, ich habe also mehrere Einträge im JSON File bzw. in der Datenbank. Wie komme ich da nun wieder dran. Ein paar ☕ später dann die Lösung.

    Wie komme ich an den einzelnen Eintrag, also über den Index??

    r1.json().get('stocks', 1)

    Gibt als Ergebnis

    {'stockname': 'Henkel', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 50}

    Ok, das passt schon mal. Somit kann man dann gewohnt auf die einzelnen Elemente zugreifen.

    print("TESTING", testing['stockname'])

    Ausgabe

    TESTING Henkel

    Ok, Teil 1 erledigt. Jetzt habe ich ja irgendwann mehrere Elemente in der Liste und brauch dann den letzten Index , um damit was machen zu können. Also, z.B. durch die Daten zu loopen.

    objkeys = r1.json().objkeys('stocks') print("Objkeys", objkeys)

    Ausgabe

    Objkeys ['0', '1']

    Ok, kommt eine Liste des Index zurück. Damit kann man arbeiten 😉

    Ich hatte dann zum Testen mittels einer while Schleife die Daten geladen, aber jetzt beim Tippen klingelt es und wir machen das schön mit enumerate 😉

    @staticmethod def load(): data = {} for count, value in enumerate(objkeys): testing = r1.json().get('stocks', count) data[count] = { "stockname": testing['stockname'], "wkn1": testing['wkn1'], "wkn2": testing['wkn2'], "quantity": testing['quantity']} return data

    Somit habe ich die Daten aus der Redis Datenbank in einem Objekt und kann damit arbeiten.

  • 0 Stimmen
    1 Beiträge
    154 Aufrufe
    Niemand hat geantwortet
  • Linux Befehle - ls & tail

    Linux
    1
    0 Stimmen
    1 Beiträge
    326 Aufrufe
    Niemand hat geantwortet
  • checkmk - Agent installieren

    Verschoben checkmk
    1
    0 Stimmen
    1 Beiträge
    2k Aufrufe
    Niemand hat geantwortet
  • Cups Druckdaemon

    Linux
    1
    0 Stimmen
    1 Beiträge
    368 Aufrufe
    Niemand hat geantwortet
  • Datensicherung zwischen zwei Server

    Linux
    2
    0 Stimmen
    2 Beiträge
    670 Aufrufe
    FrankMF

    Funktionskontrolle heute morgen war o.k. Schreibt die Daten aber noch ins falsche Verzeichnis, da muss ich nochmal ran.

  • Redis Datenbank sichern

    Verschoben Redis
    1
    0 Stimmen
    1 Beiträge
    746 Aufrufe
    Niemand hat geantwortet