sch-scripts/Μεταβλητές

Μεταβλητές που χρησιμοποιούνται στα 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}
φτιάχνει έναν υποφάκελο στα Έγγραφα του καθηγητή και αντιγράφει τις ασκήσεις των μαθητών σε αυτούς τους υποφακέλους.

sch-scripts/Μεταβλητές (last edited 30-01-2010 09:29:26 by ΆλκηςΓεωργόπουλος)