Μεταβλητές που χρησιμοποιούνται στα sch-scripts
Στο πεδίο Exec των .desktop αρχείων που χρησιμοποιούνται για τα sch-scripts, μπορούν να μπουν οι παρακάτω μεταβλητές:
@{u.πεδίο}
Η μεταβλητή u (user), περιέχει τις πληροφορίες για τους επιλεγμένους χρήστες. Αποδεκτά πεδία είναι τα παρακάτω:
Πεδίο |
Περιγραφή |
name |
το login name |
uid |
ο αριθμός user id |
rname |
το ονοματεπώνυμο |
office |
το τηλέφωνο γραφείου |
wphone |
το τηλέφωνο εργασίας |
hphone |
το τηλέφωνο οικίας |
dir |
ο προσωπικός φάκελος |
desktop |
η Επιφάνεια εργασίας |
documents |
ο φάκελος Έγγραφα |
download |
ο φάκελος Λήψεις |
music |
ο φάκελος Μουσική |
pictures |
ο φάκελος Εικόνες |
publicshare |
ο φάκελος Δημόσιο |
templates |
ο φάκελος Πρότυπα |
videos |
ο φάκελος Βίντεο |
shell |
το κέλυφος |
groups |
τα groups που ανήκει, διαχωρισμένα με κόμματα |
min |
περιγραφή των υπόλοιπων στο http://docs.python.org/library/spwd.html#module-spwd |
max |
|
warn |
|
inact |
|
expire |
|
pwd |
|
plainpw |
|
${t.πεδίο}
Η μεταβλητή t (teacher) περιέχει τα ίδια πεδία με τη μεταβλητή u, απλά αναφέρεται στον καθηγητή που έτρεξε το πρόγραμμα sch-scripts.
@{g.πεδίο}
Η μεταβλητή g (group), περιέχει τις πληροφορίες για τις επιλεγμένες ομάδες. Αποδεκτά πεδία είναι τα παρακάτω:
Πεδίο |
Περιγραφή |
name |
το όνομα της ομάδας |
members |
τα μέλη της ομάδας, διαχωρισμένα με κόμματα |
|
|
@{c.πεδίο}
Η μεταβλητή c (client ή computer), περιέχει τις πληροφορίες για τους επιλεγμένους υπολογιστές. Αποδεκτά πεδία είναι τα παρακάτω:
Πεδίο |
Περιγραφή |
name |
το όνομα του υπολογιστή |
ip |
η διεύθυνση IP του υπολογιστή |
mac |
η mac address του υπολογιστή |
${s.πεδίο}
Η μεταβλητή s (server), περιέχει τα ίδια πεδία με τη μεταβλητή c, με τη διαφορά ότι αναφέρεται στον εξυπηρετητή. Ο εξυπηρετητής δεν εμφανίζεται στη λίστα των υπολογιστών.
@${f.πεδίο}
Η μεταβλητή f (file), περιέχει τις πληροφορίες για τα επιλεγμένα αρχεία. Αποδεκτά πεδία είναι τα παρακάτω:
Πεδίο |
Περιγραφή |
name |
το πλήρες όνομα του αρχείου |
type |
ο τύπος του αρχείου. Αν το .desktop υποστηρίζει έναν συγκεκριμένο τύπο αρχείων, δεν το ορίζει με αυτή τη μεταβλητή, αλλά με τη γραμμή ?MimeType, δείτε για παράδειγμα το firefox.desktop |
διάφορα άλλα |
ανάλογα τι θα χρειαστούμε... man find |
${text.Κείμενο προτροπής}
Η μεταβλητή text μπορεί να χρησιμοποιηθεί στην περίπτωση που το σενάριο χρειάζεται κάποια πληροφορία κειμένου από το χρήστη. Για παράδειγμα "αποστολή ενός μηνύματος στους επιλεγμένους χρήστες". Ίσως να βάλουμε κι άλλες τέτοιες, π.χ. $number, $date κτλ, αλλά ίσως και να μην βάλουμε καμία και ας τα κάνει μόνο του το κάθε script με το zenity.
Επέκταση μεταβλητών: διαφορά $ και @
Το $ σημαίνει "μπορώ να δεχτώ μόνο μία τέτοια παράμετρο". Για παράδειγμα, ένα script με Exec=entoli ${u.name} μπορεί να δεχτεί μόνο ένα username. Αν όμως ο καθηγητής έχει επιλέξει πολλαπλά usernames; Τότε, τα sch-scripts θα πρέπει να καλέσουν επανειλλημένα την entoli, περνώντας κάθε φορά ένα μόνο username.
Βέβαια, αν στην Exec υπάρχουν συγχρόνως ${u.name} και ${f.name}, και αν ο καθηγητής έχει επιλέξει Ν χρήστες και Μ αρχεία, τότε η εντολή θα πρέπει να εκτελεστεί ΝxΜ φορές! Επειδή αυτό ίσως και να μην είναι αυτό που ήθελε ο καθηγητής, σ' αυτήν την περίπτωση τα sch-scripts εμφανίζουν διάλογο ο οποίος δείχνει πόσες και ποιες ακριβώς εντολές θα εκτελεστούν, και ρωτάνε τον καθηγητή αν θέλει να προχωρήσει στην εκτέλεση.
Αντίθετα, αν κάποιο script υποστηρίζει πολλαπλές παραμέτρους, μπορεί να χρησιμοποιήσει το @. Για παράδειγμα, ένα script με Exec=entoli @{u.name} μπορεί να δεχτεί πολλά usernames μαζί, κι έτσι τα sch-scripts θα το καλούσαν μόνο μία φορά, ακόμα κι αν ο καθηγητής είχε επιλέξει πολλά ονόματα χρηστών ταυτόχρονα.
Σχετικά με την επέκταση των μεταβλητών: γίνεται ανάλυση της εντολής Exec όπως θα γινόταν αν την εκτελούσαμε από το κέλυφος, και ανάλογα με τα κενά χωρίζονται και οι παράμετροι. Για παράδειγμα, στη γραμμή Exec=ln -s ${t.publicshare} ${u.desktop}/Υλικό\ μαθήματος η εντολή ln έχει 3 παραμέτρους. Αντίστοιχα, στη γραμμή Exec=lpr "@{u.documents}/Άσκηση κειμένου.txt" η εντολή lpr έχει τόσες παραμέτρους, όσοι είναι οι επιλεγμένοι χρήστες.
Παραδείγματα
- Exec=cp @{f.name} ${u.documents}
- αντιγράφει τα επιλεγμένα αρχεία στα Έγγραφα του χρήστη.
- Exec=ssh ${c.ip} poweroff -fp
- τερματίζει τους επιλεγμένους υπολογιστές (καλείται διαδοχικά για όλους τους Η/Υ από τα sch-scripts).
- Exec=sch-run-in-user-session @{u.name} vlc
- εκτελεί το vlc εντός της συνεδρίας των επιλεγμένων χρηστών.
- Exec=sch-run-as-teacher sch-epistrofi-askiseon --users @{u.name} --files @{f.names}
- φτιάχνει έναν υποφάκελο στα Έγγραφα του καθηγητή και αντιγράφει τις ασκήσεις των μαθητών σε αυτούς τους υποφακέλους.
