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.
Válasszuk a „printers” fület….
é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)
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: