Ubuntu: de perfecte server – Scanner


(Laatst bijgewerkt op 05 februari 2012; zie onderaan artikel voor meer informatie)
Het artikel Ubuntu: de perfecte server – VirtualBox printserver bespreekt hoe een printerserver te installeren in een virtuele server. Dit is handig, want dan kan iedereen op het netwerk de printer gebruiken. Maar wat te doen met een scanner? Het liefst wil je de scanner naast je hebben staan als je meerdere pagina’s moet scannen. Je wilt niet continue tussen je computer en de scanner heen en weer lopen. Zeker als deze op een server is aangesloten en deze geen automatische feeder heeft. Wat je wilt is de scanner bedienen bij de server en wel zo dat iedereen dat kan doen. Dat kan met SANE (Scanner Access Now Easy).

SANE is een application programming interface (applicatie programmeer interface; API) wat de gebruikersinterface van de driver voor de hardware scheidt. Grafische gebruikersinterfaces voor SANE zijn bijvoorbeeld XSane en Simple Scan. Beide niet te gebruiken op een server, of je moet het X Window Systeem willen installeren. Er is echter ook een command line interface (CLI): scanimage dat we wel goed kunnen gebruiken op de server.

Voordat we verder gaan met installeren, kan op de webpagina’s ondersteunde apparaten en ondersteunde apparaten in libsane-extras gecontroleerd worden of de scanner ondersteund wordt.

SANE installeren

We gaan SANE installeren op de gastheer en niet in een VirtualBox virtuele machine. Waarom? Omdat we dan weer een andere desktop/laptop computer nodig hebben om een Terminal Server Client te openen wanneer we willen scannen.

Ga naar de gastheer en voer het volgende commando uit:
sudo apt-get install sane sane-utils libsane-extras

In de uitvoer staat dat de saned gebruiker en groep zijn aangemaakt en dat saned uitgeschakeld is. Als allereerste gaan we saned inschakelen. Hier voor moeten we het bestand /etc/default/saned aanpassen:
sudo vi /etc/default/saned en wijzig RUN=no in RUN=yes
Sluit vi door op :wq te drukken.

Voer het commando sudo service saned start uit om SANE te starten.
Na een herstart van de server wordt SANE automatisch gestart omdat RUN nu op yes staat. Het bestand /etc/default/saned wordt namelijk aangeroepen door het init-script /etc/init.d/saned.

SANE wordt uitgevoerd door de gebruiker saned. Willen we de scanner kunnen bedienen dan moeten we saned toevoegen aan de groep lp (line printer) en de gebruiker op de server aan de groep saned:
sudo adduser <gebruikersnaam> saned
sudo adduser saned lp

waarbij <gebruikersnaam> de inlognaam is van de gebruiker.

Controleer met behulp van het commando id -nG <gebruikersnaam> of de gebruiker al toegevoegd is aan de groep lp. In het resultaat van het commando moet je dus de groep lp zien. Zie je deze niet, dan moet de gebruiker nog toegevoegd worden: sudo adduser <gebruikersnaam> lp

De scanner moet ook door de groep lp gezien worden, dit krijgen we voor elkaar door de scanner op te nemen in udev. Om dit te kunnen doen hebben we informatie nodig van de scanner. Deze informatie verkrijgen we via het commando lsusb

Achter het ID staat de <fabrikant>:<product> voor de scanner.

Nu we deze info hebben kunnen we een udev rule aanmaken voor de scanner die dan aangesloten kan worden op elke willekeurige USB-poort:
sudo vi /etc/udev/rules.d/90-scanner.rules
voer de volgende regel in:
SUBSYSTEMS=="usb", ATTR{idVendor}=="<fabrikant>", ATTR{idProduct}=="<product>", ACTION=="add", ENV{libsane_matched}="yes", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", GROUP="lp", MODE="0660", OPTIONS+="last_rule", waarbij <fabrikant> en <product> exact uit het resultaat van het sudo lsusb commando worden overgenomen.
Sluit vi door op :wq te drukken.

Dit script werkt voor elke USB-scanner/all-in-one printer. Zorg dat dit script na de andere sane scripts, die eventueel aanwezig zijn, in /etc/udev/rules.d wordt uitgevoerd.

Om alles te activeren moet de server worden herstart (de herstart is in ieder geval nodig om de toevoeging aan de groepen te activeren):
sudo shutdown -r now

Zet de scanner (of all-in-one printer) aan en voer het commando scanimage -L uit om de zien of de scanner herkent wordt. Als de scanner niet herkend wordt ga dan naar het hoofdstuk Troubleshooting.

Scannen

Scannen doen we met het scanimage commando
scanimage --batch --batch-prompt --format tiff
Uitleg:
–batch: standaard uitvoer is out%d.pnm of out%d.tiff als de optie –format tiff is gespecificeerd. %d staat voor het volgnummer.
–batch-prompt: na het invoeren van een pagina om te scannen moet op de Enter-toets worden gedrukt. Ctrl-D om het scannen te beëindigen.
–format: kan tiff of pnm zijn

scanimage --help -d <scanner apparaat> geeft de beschikbare opties voor de aangekoppelde scanner,waarbij <scanner apparaat> in het resultaat van het scanimage -L commando wordt gevonden. Voor meer uitleg zie man scanimage. Vaak kan de mode en resolutie gespecificeerd worden.

Image converteren naar PDF

Als meerdere pagina’s gescanned worden, dan is het handig om deze meerdere pagina’s in een PDF document te plaatsen. SANE doet dat niet en dus moeten we een andere oplossing vinden. ImageMagick kan meerdere scans converteren naar één PDF. Dus moet we ImageMagick installeren:
sudo apt-get install imagemagick

Het volgende commando converteert meerdere pagina’s naar één PDF:
convert out*.tif -compress jpeg -density 300x300 output.pdf

PDF emailen

Zo en als laatste stap zou het handig zijn om dit bestand te e-mailen. Daarvoor is Mutt uitermate geschikt, vooral omdat Mutt bijlagen kan toevoegen.

Mutt installeren we als volgt:
sudo apt-get install mutt


Kies Internetsite om email via internet te versturen.

Kies de standaard naam die wordt weergegeven als afzender domein.

Omdat home mailservers vaak worden geblokkeerd  vanwege het spamkarakter, gebaseerd op dynamische IP-adressen en geen reverse DNS mapping, kan je het beste een relayhost opnemen. Een relayhost is een andere bestaande mailserver, bijvoorbeeld die van je Internet Service Provider. Dit doe je door het main.cf-bestand van Postfix (de mailserver die Mutt standaard gebruikt) aan te passen: sudo vi /etc/postfix/main.cf
Scroll naar beneden en voeg achter relayhost =  de mail server van je provider toe in de vorm van [ISPmailserver]. Bijvoorbeeld relayhost = [mail.planet.nl]
Sluit vi door op :wq te drukken.
Je verstuurt je email dus nu via de mailserver van je Internet Service Provider.

Het volgende commando stuurt het PDF-document als bijlage van een email:
mutt -s "Uw gescande document" -a <bijlage> -- <emailadres ontvanger> < <bericht>, waarbij <bijlage> het pad is naar de bijlage, <e-mailadres ontvanger> het volledige e-mailadres is van de ontvanger en <bericht> een tekst bericht is voor de email.

Mutt slaat alle verstuurde emails op in een sent folder. Indien dit niet gewenst is dan moet een configuratiebestand gemaakt worden:
vi ~/.muttrc met daarin de volgende regel: set copy=no
Sluit vi door op :wq te drukken.

Nawoord

Natuurlijk wordt het allemaal veel gemakkelijker als bovenstaande (scannen, converteren naar PDF en emailen) met behulp van een script wordt uitgevoerd.

Zie Ubuntu: de perfecte server – Scanner script voor het script.

Troubleshooting

Scanimage “No scanner were identified” foutmelding
Als de melding “No scanners were identified” verschijnt, dan:

  • óf staat de scanner niet aan,
  • óf de driver is niet geladen,
  • óf de udev scanner-rules is fout,
  • óf er is geen Linux driver voor de scanner.

Een veelvoorkomende fout is dat hplip niet geïnstalleerd is als je een HP printer/scanner hebt. HPLIP bevat nl. de sane-backend.

Scanimage “Error during device I/O” foutmelding
Dit kan worden veroorzaakt door

  • een ander programma wat de USB-poort van de printer bezet houdt. Zorg dan dat dit programma die poort vrij geeft.
    VirtualBox kan deze poort ook vasthouden als deze server een virtuele printerserver heeft. Om de poort vrij te geven kan het volgende commando worden uitgevoerd:
    VBoxManage controlvm <vm-naam> --usbdetach <address>, waarbij <address> via het commando VBoxManage list usbhost gevonden kan worden.
    Het commando VBoxManage controlvm <vm-naam> --usbattach <address> activeert de poort weer binnen de virtuele machine.
  • een fout in het udev script /etc/udev/rules.d/90-scanner.rules

Wijziging 05 februari 2012: relayhost toegevoegd voor Mutt.
PS. Authenticatie hiervoor (indien de ISP dit verlangt) moet ik nog toevoegen.


About these ads

7 thoughts on “Ubuntu: de perfecte server – Scanner

  1. Hallo Leo,
    In het begin struikel ik al.
    @dotvaneenkans:~$ sudo adduser j. hartog saned
    adduser: Er zijn maar één of twee namen toegestaan.
    koelewijn@dotvaneenkans:~$ sudo adduser saned lp
    De gebruiker `saned’ is reeds lid van `lp’.
    koelewijn@dotvaneenkans:~$ id -nG j. hartog
    id: overtollig argument: ‘hartog’
    Typ ‘id –help’ voor meer informatie.
    koelewijn@dotvaneenkans:~$ id -nG j.hartog
    id: j.hartog: Onbekende gebruiker
    koelewijn@dotvaneenkans:~$ sudo adduser j.hartog saned
    adduser: De gebruiker `j.hartog’ bestaat niet.
    ———————————————————
    Mijn gebruikersnaam j.spatie hartog word als 2 namen beschouwd en j.hartog zonder spatie bestaat niet, wat te doen?
    Met vriendelijke groet,

    • Beste J.,

      Antwoorden op je vragen:
      – adduser: Er zijn maar één of twee namen toegestaan.
      de gebruikersnaam in het commando sudo adduser saned is de gebruikersnaam waarmee je inlogt. Zo te zien is dat koelewijn. koelewijn@dotvaneenkans: koelewijn is je gebruikersnaam en dotvaneenkans je computernaam.
      – De gebruiker `saned’ is reeds lid van `lp’
      dit is niet erg. Je hoeft geen verdere actie te ondernemen, omdat deze reeds lid is.
      – id: overtollig argument: ‘hartog’
      dezelfde opmerking als bij adduser: dit is de gebruikersnaam waarmee je inlogt.
      – id: j.hartog: Onbekende gebruiker
      idem’
      – adduser: De gebruiker `j.hartog’ bestaat niet
      idem

      Ik hoor het wel als het nog steeds niet lukt. Succes met de uitdaging.

      • Leo bedankt,
        Het is een goed half jaar geleden dat ik reageerde, maar ik heb ten einde raad al mijn printers (3 stuks) verwijderd en toen een nieuwe geinstalleerd en dat ging goed. Dat is overigens een canon i550 die tot nog toe goed werkt onder de driver van de i560.
        Nogmaals bedankt!

        • J., Goed dat je het op deze manier hebt opgelost. Soms werkt dit het beste zonder veel extra uitzoekwerk.
          Mij was trouwens niet duidelijk dat je 3 printers had geïnstalleerd.

  2. Hoi Leo,

    Heb het antwoord al gevonden.

    sudo dpkg-reconfigure postfix

    Wil je me een keer mailen heb een vraag.

    Met vriendelijke groet,

Vragen, opmerkingen en meningen over dit artikel kan je hier kwijt:

Vul je gegevens in of klik op een icoon om in te loggen.

WordPress.com logo

Je reageert onder je WordPress.com account. Log uit / Bijwerken )

Twitter-afbeelding

Je reageert onder je Twitter account. Log uit / Bijwerken )

Facebook foto

Je reageert onder je Facebook account. Log uit / Bijwerken )

Google+ photo

Je reageert onder je Google+ account. Log uit / Bijwerken )

Verbinden met %s