Spooler Filter

DJ Art djart at freemail.gr
Wed May 24 19:49:43 EEST 2000


Τελικά, η ιδέα για το filter του Γιάννη είναι καλή (πρίν, όμως, αλλάξω
το lpr ;-))

Έφτιαξα το παρακάτω σε gawk. Υπάρχουν ορισμένα προβλήματα:

1) Πώς θα πάρω τον user που έτρεξε το lpr ???
2) Πώς θα πάρω το Job id ??
3) optional: Πώς θα πάρω το μέγεθος του αρχείου που εκτυπώνει ??

Λοιπόν:

#!/bin/sh

gawk '
BEGIN {
for (i=1;i<=80;i++) printf "*" ;
for (i=1;i<=80;i++) printf "*" ;
for (i=1;i<=80;i++) printf "*" ;

# ναι, ξέρω, θέλει function.

printf "\n\n"; 
printf "User: ";
system ("finger $USER | gawk -f script");

# γελάτε, ε ?? :) gawk μέσα από gawk !!!!
# Λοιπόν ας γράψω το script και να εξηγήσω τί θέλω.
# script ==> { if (NR<=1) print $4,$5}
# Θέλω να τυπώσω το 5o πεδίο του passwd, αυτό που γράφει 
# πληροφορίες/ονοματεπώνυμο κλπ. Ε, το παίρνω από το 4o/5o πεδίο του 
# finger $USER

printf "\n";
printf "Job id: ";
system ("lpq | gawk -f script2");

# (άντε πάλι ;-)) Ναι, το ξέρω εκ των προτέρων πως δεν θα καταφέρω 
# να πάρω το Job από το lpq, αφού δεν μένει το αναθεματισμένο εκεί 
# για πολλή ώρα :-(
# script 2 ==> 
#$2 == ENVIRON["USER"] {print $3, "    Total Size: ", $5,$6}

printf "\n";
system ("date");
printf "\n";
}
{print $0}'
-----------------------------

Κάπου στο τέλος ξέχασα και ένα printf "\f". Λοιπόν, θέλω σε κάθε lpr
request να τυπώνεται σε μία σελίδα το εξής:

*********************************************
*********************************************
*********************************************

User: DJ Art

Job Id: 60   Total size: 45 bytes

Wed May 24 19:39:34 EEST 2000
------------------------------

Ποιό είναι τώρα το πρόβλημα:

όταν τρέξω το filter με το "χέρι", όλα δουλεύουν. Όταν το "αναλάβει" ο
lpr, φυσικά και βγάζει στο User: Idle Login αφού δεν ισχύει το $USER.
Και φυσικά, στο Job Id δεν βγάζει τίποτα, αφού δεν υπάρχει τίποτα μέσα
στο lpq.

Όταν εκτελείται το φίλτρο, εκτελείται με option -n username. Ο owner της
process του sh /var/spool/filter είναι ο username (αυτός που πρέπει
δηλαδή) και ο owner της process της gawk είναι πάλι ο σωστός. Μπορώ να
πάρω το user, από εκεί ??

Ιδέες ???

-- 
===========================================================
| DJ Art (aka Kyritsis Athanasios) <djart at hellug.gr>      |
| Studying Electrical & Computer Engineering @ UPatras    |
| Maintaining http://www.linux.gr                         |
| Visit http://www.geocities.com/SiliconValley/Code/6319  |
===========================================================


--
linux-greek-users mailing list -- http://lists.hellug.gr




More information about the Linux-greek-users mailing list