![]()
(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 commandoVBoxManage 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.
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 sanedis 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.
Hoi Leo,
Als ik mutt installeer dan krijg ik geen configuratie wizard van postfix hoe kan ik dat oplossen.
Alvast bedankt,
Hoi Leo,
Heb het antwoord al gevonden.
sudo dpkg-reconfigure postfix
Wil je me een keer mailen heb een vraag.
Met vriendelijke groet,
J, goed dat je het zelf al opgelost hebt. Kan je de vraag hier niet stellen, aangezien ik heel terughoudend ben om lezers te gaan mailen.