NAS házilag – IV. rész (nyomtatás)

A nyomtatás  szolgáltatás beállítása NAS-on egy ideig nem volt létfontosságú. Nekem a routerre van rákötve a nyomtató és a szkenner, onnan érik el a gépek.
Ami életre hívta a dolgot az két probléma:

  • nem rég egy vendégem szeretett volna valamit kinyomtatni a gépéről és az elég körülményes lett volna, hogy ezért fel kellett volna telepíteni a hálózati nyomtatót. Így maradt a “küldd át email-ben” verzió.
  • Az e-maileket sokszor a reggeli kávé mellett a telefonom nézem meg. Jellemzően mire visszaérek a lakásba a kávé és cigi után, már azt is elfelejtem, hogy megnéztem az e-maileket nem hogy azt, hogy ki is kellett volna nyomtatnom valami fontosat. A laptopon már olvasottként jelenik meg és nem szúr szemet (hiába, ezer felé van sokszor az eszem).
    Gondoltam kinyomtatom reggel telefonról.
    Nos, a tizedik ‘aztakurvamilyenprofinyomató‘ app után hagytam a fenébe a keresgélést a store-ban és egyszerűbb megoldást kerestem.
    Amire jutottam:

Az OMV-re feltoltam az openmediavault-cups csomagot és hozzáadtam a nyomtatóm HP néven.

cups_01

cups_02

Válasszuk a “printers” fület….

 

cups_03

 

és az “Advanced management”-t. Új lap nyílik és bent vagyunk a CUPS admin felületében. Erre most nem térnék ki, teljesen logikusan feltelepíthető bármilyen nyomtató… (Administration fül, Add Printer)

cups_04

Hozzáadtam a nyomtatómat. Teszt oldalt kinyomta, akkor ez rendben is van….

Ezek után:

1, létrehoztam a NAS-on egy megosztott mappát a sokat mondó “nyomtat” néven (ide dobálom be a nyomtatandó fájlokat)

2, létrehoztam benne egy almappát a “nyomtatva” néven (ide kerülnek át a kinyomtatott fájlok – ez nem lenne fontos, de szeretem az átláthatóságot)

3, a /root mappába betettem ezt a scriptet print.sh néven és adtam rá futási jogot (cmod +x print.sh):
#!/bin/sh
cd /media/ba7e952d-a476-45ac-bd13-c8ae8ec7b526/nyomtat/
for i in *.*; do
mv “$i” “`echo $i | sed -e ‘y/áéíóöőúüűÁÉÍÓÖŐÚÜŰ /aeiooouuuAEIOOOUUU_/’`”;
done
if ls | grep ‘.pdf’ > /dev/zero
then
for i in $( ls | grep ‘.pdf’ ); do
lp -d HP $i && mv $i nyomtatva
done
fi

if ls | grep ‘.doc’ > /dev/zero
then
for i in $( ls | grep ‘.doc’ ); do
unoconv –stdout $i | lp -d HP && mv $i nyomtatva
done
fi

if ls | grep ‘.odt’ > /dev/zero
then
for i in $( ls | grep ‘.odt’ ); do
unoconv –stdout $i | lp -d HP && mv $i nyomtatva
done
fi

if ls | grep ‘.docx’ > /dev/zero
then
for i in $( ls | grep ‘.docx’ ); do
unoconv –stdout $i | lp -d HP && mv $i nyomtatva
done
fi

if ls | grep ‘.jpg’ > /dev/zero
then
for i in $( ls | grep ‘.jpg’ ); do
lp -d HP $i && mv $i nyomtatva
done
fi
exit

Természetesen meg kell változtatni a “cd /media/ba7e952d-a476-45ac-bd13-c8ae8ec7b526/nyomtat/” a te NAS-odon található elérési utadnak megfelelően.

Menjünk át sorba a scripten:

cd /media/ba7e952d-a476-45ac-bd13-c8ae8ec7b526/nyomtat/

Belép a NAS megosztott mappájába

for i in *.*; do
mv “$i” “`echo $i | sed -e ‘y/áéíóöőúüűÁÉÍÓÖŐÚÜŰ /aeiooouuuAEIOOOUUU_/’`”;
done

Végig halad a mappában található fájlokon és azok neveiben kicseréli az “érvénytelen” karaktereket az angol ABC betűire, illetve a szóközöket alsóvonásra ( _ ) cseréli. Ez azért fontos mert ellenkező esetben hibát fog produkálni a parancs. Tehát ha van egy ilyen fájlunk:

Nyomtatásra küldöm.doc abból csinál egy Nyomtatasra_kuldom.doc elnevezésűt.

if ls | grep ‘.pdf’ > /dev/zero
then
for i in $( ls | grep ‘.pdf’ ); do
lp -d HP $i && mv $i nyomtatva
done
fi

Megnézi, hogy van-e pdf kiterjesztésű fájlunk, ha van, akkor futtatja az lp -d HP $i && mv $i nyomtatva parancsot, aminek az első fele a nyomtatás parancs (lp -d HP $i) a második fele pedig a sikeres nyomtatás után a nyomtatott fájlt áthelyezi a nyomtatva mappába (mv $i nyomtatva).

Ami fontos, hogy a szkriptben a HP elnevezés az, aminek én a nyomtatómat elneveztem!

A többi sor ennek módosítása. Az unoconv –stdout $i parancsra akkor van szükség, ha docx, xlsx, stb. kiterjesztésű fájlokkal van dolgunk, mert ezeket ezzel a “módszerrel” először a fájlt konvertáljuk a nyomtatónknak értelmezhető formátumra, majd ezután adjuk át nyomtatásra. (lp -d HP $i ) Fontos, hogy a két parancs között “pipe jel” (|) van. (Az altgr és a w lenyomásával lehet produkálni.)

Ezek után ezt betettem CRON-ba:

crontab -e

A legvégéhez hozzádtam (ezután a sor után – # m h dom mon dow command):
*/1 * * * * /root/print/print.sh

Ezek után bármilyen, a fenti scriptbe meghatározott fájlt kinyomtat egy percen belül. A fenti scriptben találhtó (odf,docx,jpg,pdf) kiterjesztésekhez a következő csomagokra volt még szükségesem:

unoconv

libreoffice-writer

Ezt a legegyszerűbb, ha “besshzol” a NAS-ra, majd kiadod ezt a parancsot:

apt install unoconv libreoffice-writer

A telefonra feltoltam egy samba megosztást kezelő programot, az OpenMediaVault admin felületén hozzáadtam a “nyomtat” mappát a megosztott mappákhoz, majd a samba megosztáshoz, adtam rá írási jogot. A telefonról egyszerűen feldobom a fájlt a samba által megosztott nyomtat mappába és egy percen belül kész a nyomtatás.

A “nyomtatva” mappában megtalálhatóak az eddig kinyomtatott fájlok. Ha szeretnénk, hosszútávra megőrizni ezeket, célszerű módosítani a szkriptet úgy, hogy dátummal lássa el a fájl neveket, ugyanis ha két azonos fájlt nyomtatunk (pl. több image.jpg elnevezésűt), akkor a nyomtatva mappában az image,jpg mindig felülíródik a legutóbbival. Persze ettől még a nyomtatás rendben menni fog.
Innentől pedig a vendég is csak átdobja a nyomtatandó fájlt a megosztott samba könyvtárba és megy is a nyomtatás. A sambara azért esett a választásom (lehetne pl. nfs, sftp,ftp), mert mind a linux, mind a windows kezeli és androidról is könnyen kezelhető protokoll.

Ennyi nyomtatni androidról:

Screenshot_2016-03-15-18-05-06

 

Screenshot_2016-03-15-18-05-21

 

Screenshot_2016-03-15-18-05-31

 

Screenshot_2016-03-15-18-05-50