FIzetős nyomtatási rendszer összeállítása

Fórumok

Hello!

A segítségeteket szeretném kérni:

Adott egy kollégium, itt szeretnék fizetős nyomtató szervert kialakítani.

A követelmények:

- vannak kollégiumi gépek (iroda stb.)IP címmel és MAC address-el megadva, amelyek ingyen tudnak nyomtatni
- vannak géptermi gépek, szintén megadott IP-vel és MAC address-el, amelyeken az épp bejelentkezett user tudna nyomtatni, megadott oldalankénti áron, a rendelkezésre álló összeg mysql-ben lenne tárolva. A felhasználók Active Directory-ban vannak tárolva, az épp bejelentkezett usertől kell levonni a pénzt.
- vannak hallgatói gépek, ezek szintén pénzért, de itt az IP azonosítaná, hogy kitől kell levonni a pénzt

A szerver ideális esetben Debian lenne.

A nyomtatás csak a pénz levonása után indulna el.

Van valami ötletetek erre? Csinált esetleg valaki már hasonló rendszert?

Petya

Hozzászólások

perl-ben vagy valami scriptben leprogramozva tudnám elképzelni valami sql adatbázis segítségével amolyan számlákat nyilvántartani, akár utólagos fizetéssel, akár előre feltöltött egyenleggel (vagy mindkettővel :) ), talán még azt is lehetne, hogy megkülönböztessük a színes (fotó) vagy szövegnyomtatást, bár ehhez még kicsit utána kőne olvasni, hogy is megy. Alapszinten oldalanként lehetne a script segítségével "fizettetni".

Igen, előre feltöltött egyenlegre gondoltam mindenképpen. Csak fekete-fehér nyomtatásról lenne szó. A kérdés az, hogy hol tudom megfogni/megakasztani a nyomtatást, ahol levonnám a pénzt? Tehát fogadja a job-ot a szerver, de csak akkor engedje a nyomtatóra, ha megtörtént a fizetés.

Petya

Nekem olyasmi jutott az eszembe, hogy fut egy daemon barmilyen nyelven megirva, ami a klienseken nyomtatoszervernek van beallitva. Fogadja a beerkezo kereseket, es ha van penz az egyenlegen / van joga ingyen nyomtatni, akkor tovabbitja az infot cups-nak (vagy barmi mas proginak ami kinyomtatja). Ehhez mondjuk alaposan ismerni kene a halozati nyomtataskor hasznalt protokollokat, nem kis munka, de biztos erdekes lehet ilyet programozni.

Jónak tűnik. Te használod?

ps:

Q: Can I use printbill with CUPS?

A: It *may* possible to make CUPS talk to lprng, but I'm not 100% sure how
to do this. Proper CUPS support is being considered for future
development... it is half-way there at the moment. LPRng works pretty well
for most environments.

Q: Is it possible to use printbill with LDAP / MySQL / Jim's Databases?

A: Again, not yet. Hopefully in the future we will abstract the database
functionality so it can use whatever backend you desire - but not yet.
Volunteers are welcome :-)

Ez nem hangzik túl jól.

Petya

Hi!

A nyomtatoszamlazas eleg gusztustalan dolog tud lenni. Szamlazhatsz hardware-esen, vagy software-esen. Ha halozati nyomtatod van, ami tudja SNMP-vel jelezni hogy hany oldal lett nyomtatva, az a legjobb. Ha legalabb USB-n vagy parhuzamos porton megy ugyanez, az is jo, de messze nem minden nyomtato tud ilyet. (HP nyomtatok gyakran tudjak, aztan lehet bujni a PJL reference guide-ot...) (Vagy pl. ki tudod olvasni, hogy hany oldal, de azt mar nem, hogy ebbol hany szines.) Igy persze csak nyomtatas utan tudsz szamlazni. Viszont, ha jo a nyomtato, a HW szamlazas megbizhato, es nem okoz nagy loadot. Aztan tudsz software-esen is, akkor mindenkepp PS-be kell nyomtatnia a klienseknek, es az oldalakat ghostscripttel a nyomtatoserveren leszamolni (meg konvertalni a nyomtato nativ nyelvere, ha nem tud PS-t). (Ilyesmit csinal(na) a printbill is, csak az megadott dpi-vel rendereli is a postscriptet es festekfedettseget is szamol.) Ez eleg nagy terhelest is tud okozni, es az sem kellemes amikor egy ghostscipt frissites utan mindenfele rendszer nelkul szall el a gs bizonyos PS file-okon. (PS-be nyomtatasnal sajnos nem lehet megbizni a PS-ben levo oldalertekben. Ha van egyaltalan benne...)

Egyreszt lattam ilyesmi SW-t CUPS-hoz, a nevere mar nem emlekszem, de nekem lprng-hez kellett volna. LPRng-hez van a printbill, de azt hiszem az nagyon reg nem frissult es nincs jol hasznalhato allapotban.

Ami nalam most mar egy jo ideje megbizhatoan mukodik, az a kovetkezo: a windowsos kliensek az Adobe PS driverevel nyomtatnak samban keresztul egy lprng queue-ba. LPRng-vel meg lehet sajat scripteket hasznalni az accountingra (kozvetlenul nyomtatas elott es utan futnak, hozzafernek a print jobhoz). A userek tudnak meg lpr-t hasznalni parancssorbol, a nyomtatoszamlaik file-okban vannak. Hal' istennek nekem nem kellett tobb fele modon is autentikalni a usereket, de valoszinuleg az aktualis IP-t is ki lehet deriteni menet kozben.

Ha erdekel valami konkretabban is, kerdezz!

udv. rubasov

Hello!

Nyomtatós dolgokban nem vagyok nagyon otthon, lehet hülyeséget kérdezek:

a nyomtató nem egy ipari készülék, egy USB-s HP SOHO kategóriájú lézernyomtató. Az ilyeneket be lehet lőni LPRng alá? Én eddig csak CUPS-ra próbáltam HP lézert beállítani, ott megy is szépen.

Az aktuális IP mellett az Active Directory-s usernevet is ki kellene szednem valahogy, ilyet tud a Samba?

Túl nagy terhelésre nem kell számítani, pusztán kényelmi szempontok, és egy felszabadult viszonylag régi (P3 500MHz) "szerver" felszabadulása miatt gondolkodom, mire lehetne felhasználni. A nyomtatás meg úgyis nyűg a jelenlegi rendszerben, szeretnék kulturált megoldást rá.

Fontos lenne még a MySQL támogatás, mindent adatbázisban tárolunk, arról készül rendszeres mentés, nem szeretnék flat file-okkal szórakozni. Össze lehet ezt hozni a MySQL-el is?

Valaki írta a PyKota-t, néztem is már,a baj csak az, hogy még a tarball is fizetős, csak a CVS-ből leszedhető verzió ingyenes, s nincs kedvem napokat szívni a fordítgatásával.

Petya

Hali!

a nyomtató nem egy ipari készülék, egy USB-s HP SOHO kategóriájú lézernyomtató. Az ilyeneket be lehet lőni LPRng alá? Én eddig csak CUPS-ra próbáltam HP lézert beállítani, ott megy is szépen.

Persze. Jobb esetben tud PS-t, de rosszabb esetben is legalabb PCL-t, ahhoz meg lehet hasznalni a hpijs gs drivert.

Az aktuális IP mellett az Active Directory-s usernevet is ki kellene szednem valahogy, ilyet tud a Samba?

Ezt meg nem tudom mondani fejbol. Nalam a samba a domain controller (passwd-bol autentikal), ugyhogy nincs ilyen gondom.

A tul nagy terhelestol azert nem kell megijedni, hacsak nem nyomtatnak havonta tobb tizezer oldalt (ezt meg egy SOHO nyomtato ugysem birja), legfeljebb a szamlazo script futasi idejevel tovabb tart egy-egy nyomtatas.

MySQL: Ahogy irtam sajat scripteket futtathatsz, ott pedig azt csinalsz, amit akarsz. Hasznalhatsz mondjuk perl-t meg DBD-t.

PyKota: Ez az, aminek nem emlekeztem a nevere. Konnyen lehet, hogy meger egy probat, mert amit en irok, az mukodik nekem (WorksForMe(tm)), de nem egy szep megoldas. :-(

udv. rubasov

Hi!

Itt a lenyeg, a tobbit ugyis neked kell az igenyeidhez igazitani:

Egy pelda bejegyzes a /etc/printcap-bol:
(Az ':as'-sel kezdodo sor a lenyeges, a script kozvetlenul a job nyomtatosorba kerulese utan fog futni.)


claser
|HP Color LaserJet 2550L
:sh:done_jobs#0:mc#100:mx#0:nb#1
:as=|/usr/sbin/lpbill.pl
:lp=/dev/usb/lp0
:sd=/var/spool/lpd/%P
:tr=

/usr/sbin/lpbill.pl:


#! /usr/bin/perl

use Getopt::Std;

my %opt;
# a script kilepesi erteke hatarozza meg, hogy mi legyen a jobbal
# JSUCC - nyomtatas
# JREMOVE - torles a nyomtatosorbol
# http://lprng.com/LPRng-Reference-Multipart/exitcodes.htm
my ( $JSUCC, $JFAIL, $JABORT, $JREMOVE, $JHOLD ) = ( 0, 32, 33, 34, 37 );

# az lprng atad egypar parametert: usernev, jobmeret, etc.
# http://lprng.com/LPRng-Reference-Multipart/filteroptions.htm
# a defaultbol atadott parameterek elegendoek szoktak lenni
# printcapben lehet allitgatni, hogy custom parametereket is atadjon,
# de az nehol bugos (vagy legalabbis az volt valaha)
getopts ( 'A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:T:S:U:V:W:X:Y:Z:'
. 'a:b:cd:e:f:g:h:i:j:k:l:m:n:o:p:q:r:t:s:u:v:w:x:y:z:', \%opt );

# hozzaferhetsz a kinyomtatando file-hoz, modosithatod is
# a job control file-jahoz is hozza lehet ferni,
# bar azokat az ertekeket parameterkent is at lehet adni
$datafile = sprintf("/%s/dfA%03d%s", $opt{d}, $opt{j}, $opt{H});

# igy lehet megbizhatoan leszamolni, hogy hany oldalas egy ps file:
# (Itt a gs problemas tud lenni, a mai napig a sarge-ban levo gs-gpl
# verziot hasznalom, mert amikor etchre upgradeltem, az uj gs igen
# gyakran elszallt a neki nem tetszo postscripteken.)
$countpagescmd = "/usr/bin/gs-gpl -q -sDEVICE=pswrite -sOutputFile=- -dNOPAUSE -dBATCH $datafile";

open (cmdfd, "$countpagescmd |");
while ( $line = <cmdfd> ) {
  if ( $line =~ '^%%Pages: ([0-9]+)' ) {
    $pages = $1;
    last;
  }
}
close cmdfd;
exit $JREMOVE if ( $pages eq '' );

# aztan johet az adatbazisba irogatas, kideriteni hogy ki az
# aktualis user, konverzio, ha szukseges, ...
[SNIP]
exit $JSUCC;

udv. rubasov

szerintem a cupsot kéne mehekkelni valahogy. hogy yí spollerbe bárki berakhasson dolgokat. de igaziból, egy másik spoolert használnál... és itt egy egyserű egyedi kis progi megnézi, hogy a
a) a job kié
b) hány oldalas -> mennyit kóstál
c) illetőnek van-e pízze

aztán számláról levon,
áthelyezi a filet a valódi spoolerbe...

nem kell konvertálni, sem semmi ilyesmit...
és ezt lehet hogy a cups-sal meg tudod csinálni. a spooler könyvtárak beállításait nézegessed. lehet hogy egy "dummy" printert kéne csinálni, és anak a spooelrjáből átmozgatni. a dummy printer pedig csak egy spoolerrel rendelkezne, kimenettel nem.

szerintem ezt, ha megvalósítható egyáltalán, max 2 nap alatt megcsinálod.
---
Reactor error - core dumped!

Nos, a kérdésem ugyanaz, mint az első. Nyomtatás számlázása kellene. Van e valami fejlemény e téren?
követelmény:
active directory-ból tudja azonositani a felhasználót, igy xp user domain tartományba jelentkezés után megkapja a kreditjeit, amit nyomtatásra fordithatna.
nyomtató: lexmark c522
Elég fontos lenne, h free legyen, ugyanis egyszer már sikerült "bevásárolni" a printmanager programot win alá, de az elég bugos volt, rosszul számolt, stb, igy mégegy ilyen inveszticiót nem szivesen vennének nálunk.
Válaszotokat előre is köszönöm.

Született végül valamilyen megoldás erre a problémára? Publikus esetleg?

Szerkesztve: Ezt ismeritek: http://www.pykota.com/ ? Sikerült beüzemelnie valakinek? Tapasztalatok?

Szerkesztve2: hurrá, működik. 1.26-os változattal sikerült összehoznom. sid alá csomag is készült. A lapok számozásához pkpgcounter: http://www.pykota.com/software/pkpgcounter/ . sid csomag létezik belőle!

e-mail
https://www.covek.hu/blog