Κοινόχρηστοι φάκελοι ή αποστολή / συλλογή αρχείων;

Ξεκίνησε από alkisg, 05 Νοε 2010, 12:54:47 ΜΜ

« προηγούμενο - επόμενο »

odysseas

Πάντως μια ακόμα λύση (που έχει συζητηθεί και αλλού) και προσωπικά την εφάρμοσα χωρίς κανένα απολύτως πρόβλημα είναι ένα μικρό scriptάκι που στέλνει ένα συγκεκριμένο αρχείο στο home (ή στην επιφάνεια εργασίας) των μαθητών ενός τμήματος. Η command line κλήση για να στείλεις, για παράδειγμα, ένα αρχείο στους μαθητές του β1 είναι distribute example.odt gymb1

Φαντάζομαι ακόμα καλύτερο scriptάκι για αυτή τη δουλειά υπάρχει στο proposed αποθετήριο των sch-scripts!

odysseas

#16
Παράθεση από: odysseas στις 04 Ιουν 2011, 05:38:57 ΜΜ
Φαντάζομαι ακόμα καλύτερο scriptάκι για αυτή τη δουλειά υπάρχει στο proposed αποθετήριο των sch-scripts!

Έριξα μια ματιά στον κώδικα, η υλοποίηση είναι σε python, δεν είμαι σίγουρος αν είναι άμεσα χρησιμοποιήσιμη.  :-\

aspd

Το script που χρησιμοποιώ για να αντιγράψω ένα αρχείο που είναι στο φάκελο ΥΛΙΚΟ στους φακέλους όλων των μαθητών ενός τμήματος (ο 2ος τρόπος που λέω παραπάνω) είναι το ακόλουθο:
#! /bin/bash
for i in `ls /home/teacher/ΤΜΗΜΑΤΑ/$1`;
do
isValidFolder=`ls -dl /home/teacher/ΤΜΗΜΑΤΑ/$1/$i | grep "^d"`
if [ "$isValidFolder" != "" ]; then
  cp -r /home/teacher/ΥΛΙΚΟ/$2 /home/teacher/ΤΜΗΜΑΤΑ/$1/$i
fi
done

Οπότε απλώς τρέχω το script με παραμέτρους το όνομα του τμήματος, π.χ. Α1.1 και το όνομα του αρχείου της άσκησης.

odysseas

Υπάρχουν διάφοροι τρόποι να απαριθμήσεις τους χρήστες ενός τμήματος. Ο πιο απλός βέβαια είναι όταν τα usernames περιέχουν το όνομα του τμήματος και έναν αριθμό (όπως αυτόματα μπορούν να φτιαχτούν από τα sch-scripts). Tότε η for σου μπορεί να στέλνει το αρχείο σου απευθείας στα home folders των μαθητών, αντί για τους υποκαταλόγους του δικού σου home folder.

alkisg

Για την ώρα η δυνατότητα δημιουργίας κοινόχρηστων φακέλων δεν υπάρχει στο -proposed αποθετήριο, αλλά έστειλα mail στη λίστα sch-devs μήπως τη δημοσιεύσουμε σιγά σιγά τώρα που τελείωσε η σχολική χρονιά.


@aspd, η εντολή find βολεύει καλύτερα για το script σου:
Κώδικας: shell
#!/bin/sh

for i in $(find "/home/teacher/ΤΜΗΜΑΤΑ/$1" -maxdepth 1 -type d); do
  cp -r "/home/teacher/ΥΛΙΚΟ/$2" "$i"
done



Επίσης, για όποιον το χρειαστεί, να ένα σκριπτάκι "group-members" που απαριθμεί τους μαθητές κάποιων τμημάτων (ομάδων):
Κώδικας: shell
#!/bin/sh

if [ $# -lt 1 ]; then
	echo "\
Usage: ${0##*/} group1 group2 ...
Shows the members that belong to the specified groups, removing any duplicates." >&2
	exit 1
fi

for group
do
	getent group "$group" | cut -d':' -f4 | tr ',' '\n'
done | sort -u | tr '\n' ' ' | sed  's/^ //;s/ $/\n/'


Το καλείτε π.χ. με `group-members a1 a2`.

aspd

for i in $(find "/home/teacher/ΤΜΗΜΑΤΑ/$1" -maxdepth 1 -type d); do
Πολύ πιο κομψό. Ευχαριστώ!

Παράθεση από: alkisg στις 05 Ιουν 2011, 09:24:09 ΠΜ
... μήπως τη δημοσιεύσουμε σιγά σιγά τώρα που τελείωσε η σχολική χρονιά.
Ό, τι μπορείτε να δημοσιεύσετε τώρα που τελείωσε η χρονιά ή αρχές Σεπτεμβρίου καλό είναι. Μετά μπαίνουμε στην καθημερινή ρουτίνα με τα μαθήματα και δε γίνονται τόσο εύκολα αλλαγές οργάνωσης.

odysseas

Παράθεση από: aspd στις 04 Ιουν 2011, 04:37:23 ΜΜ
2ος τρόπος (όχι τόσο σωστός, αλλά έλα που με βολεύει! Αυτόν εφάρμοσα τη χρονιά που πέρασε). 9 λογαριασμοί συνολικά (1 για κάθε υπολογιστή). Στο server είχα φτιάξει ένα φάκελο ΤΜΗΜΑΤΑ, όπου μέσα είχα μία δομή σαν την παρακάτω:
φάκελος Α1.1 με υποφακέλους: Μαρία_Χ, Νίκος_Υ, ... Γιώργος_Ζ
φάκελος Α1.2 με υποφακέλους: Θανάσης_Χ ...

aspd, αν κατάλαβα καλά αυτό σε βολεύει γιατί είναι ευκολότερη η συλλογή των αρχείων, ή υπάρχει κι άλλος λόγος;

Επίσης, γιατί πρέπει να έχεις έναν λογαριασμό ανά υπολογιστή; Αφού ούτως ή άλλως κάθε μαθητής παίρνει τα αρχεία σου από κατάλογο που δεν έχει σχέση με το λογαριασμό του.

aspd

Στην πράξη το λογαριασμός ανά μαθητή δεν το έχω δοκιμάσει ακόμα.
Η δομή με τους φακέλους που είναι στο λογαριασμό μου στο server με βολεύει για την εύκολη συλλογή αρχείων και γιατί μπορώ πολύ γρήγορα να δω όλα όσα έχει αποθηκεύσει ο μαθητής και όχι μόνο το συγκεκριμένο αρχείο που πιθανώς να μπορούμε να συλλέξουμε αυτόματα.
Επίσης ... το εργαστήριο είναι έτοιμο για την επόμενη ώρα (στο σχολείο οι ρυθμοί και οι εναλλαγές μερικές φορές είναι πιεστικές από χρόνο), χωρίς logout και νέο login. Το τελευταίο όμως αγνόησέ το, δεν είναι επιχείρημα, γιατί οι μαθητές θα πρέπει να είναι εξοικειωμένοι με την ιδέα προσωπικού λογαριασμού στον οποίο συνδέονται και αποσυνδέονται μόλις τελειώσουν τη δουλειά τους.