Edubuntu: Χρήσιμες εντολές

Ξεκίνησε από alkisg, 14 Δεκ 2007, 01:14:31 ΜΜ

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

alkisg

Πληροφορίες υλικού:
lshw, lspci, lsusb, lshal, lspcmcia.

Διόρθωση ελληνικών fonts σε καθαρή κονσόλα (εννοείται ότι σε παραθυρικές κονσόλες όλα δουλεύουν σωστά χωρίς ρυθμίσεις):
Κώδικας: shell
dpkg-reconfigure console-setup

Και δίνουμε Keyboard layout: Greece - Extended, AltGr key replacement: Right Alt, Set of characters that should be supported by the console font: # Greek, Font for the console: VGA.
Τόνος δεν μπαίνει σε UTF8 mode, αλλά μη διαλέγετε ISO-8859-7 γιατί μετά δεν φαίνονται σωστά τα ελληνικά αρχεία.

Προβολή προχωρημένων επιλογών του ltsp-build-client:
Κώδικας: shell
ltsp-build-client --extra-help


Εκτέλεση εντολής για όλους τους χρήστες:
Κώδικας: shell
for i in $(ls /home); do echo a command for... $i; done


Εύρεση όλων των χρηστών του group c1:
Κώδικας: shell
getent group c1|cut -d: -f4|tr ',' '\n'


Εκτέλεση εντολής για αρχεία που μπορεί να περιέχουν και κενά:
Κώδικας: shell
(IFS=$'\n'; for file in `ls .`; do echo Βρήκα: $file; done)
ή
ls . | xargs -I _file_ echo Βρήκα: _file_

Οι παρενθέσεις σημαίνουν "execute in a subshell environment" ώστε να μην πειραχθεί η αρχική τιμή (IFS=$' \t\n') της μεταβλητής περιβάλλοντος IFS, η οποία καθορίζει τους χαρακτήρες που χρησιμοποιούνται σαν διαχωριστικά. Το -I _file_ σημαίνει να αντικαταστήσει όλα τα _file_ με τα αρχεία που βρήκε, θα μπορούσε να είναι οτιδήποτε άλλο, π.χ. %name%.

Αλλαγή των δικαιωμάτων των υποφακέλων σε 755 και των αρχείων σε 644:
Κώδικας: shell
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;


Εύρεση του uuid των δίσκων για ρύθμιση του grub:
Κώδικας: shell
sudo ls -l /dev/disk/by-uuid
ή με vol_id
ή με blkid


Αλλαγή του uuid ενός δίσκου:
Κώδικας: shell
tune2fs -U random /dev/sda1


Remount δίσκου από ro σε rw:
Κώδικας: shell
mount -o remount,rw /media/somedisk


Διόρθωση λάθος ssh key (The RSA host key for <server> has changed):
Κώδικας: shell
ssh-keygen -R <server>


Εκτέλεση rdesktop στους clients για σύνδεση με Windows server και redirection του ήχου ώστε να ακούγεται στους clients:
Κώδικας: shell
padsp rdesktop -r sound:local host


Προσωρινό NAT στον server ώστε να δει η κονσόλα των clients το Διαδίκτυο για apt-get update κτλ:
Κώδικας: shell
sudo su
iptables -t nat -A POSTROUTING -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
exit


Δημιουργία .iso από CD:
Κώδικας: shell
dd if=/dev/cdrom of=./CDImage.iso


Δημιουργία bootable .iso με floppy emulation. Υποθέτω ότι είμαστε (pwd) σε έναν άδειο φάκελο που περιέχει μόνο το floppy image grubgpxe.img:
Κώδικας: shell
genisoimage -b grubgpxe.img -o grubgpxe.iso .


Ομαλός τρόπος κλεισίματος αν για κάποιον λόγο κολλήσει:
Alt+Ctrl+PrtSc+REISUB

alkisg

#1
Script για italc/automatic client discovery στο ubuntu hardy.
Χρησιμεύει όταν ο καθηγητής κάθεται στον server, αλλιώς δεν χρειάζεται.
Ευχαριστίες στον stgraber!!!

Κώδικας: shell
#!/bin/bash
mkdir ~/.italc 2> /dev/zero
mv ~/.italc/globalconfig.xml ~/.italc/globalconfig.ltsp.xml
echo '<?xml version="1.0"?>
<!DOCTYPE italc-config-file>
<globalclientconfig version="1.0.6" >
  <body>
   	<classroom name="LTSP" >' > ~/.italc/globalconfig.xml
count=0
for i in `ps aux | grep "ica" | grep -v grep | grep -v "rx11vs" | grep "isdport" | sed "s/.* -isdport //"`;
do
   	count=$(($count+1))
   	port=$(($i-1000))
   	ip=$(($port-10000))
   	mac=`arp -n | grep "$ip  " | awk '{print \$3}'`
   	echo "      <client localip=\"127.0.0.1:$port\" mac=\"$mac\" remoteip=\"127.0.0.1:$port\" type=\"0\" id=\"$count\" name=\"Client $count\" />" >> ~/.italc/globalconfig.xml
done
echo '    </classroom>
  </body>
</globalclientconfig>' >> ~/.italc/globalconfig.xml
italc
mv ~/.italc/globalconfig.ltsp.xml ~/.italc/globalconfig.xml


edit: στην επερχόμενη έκδοση 1.0.9 έχουν βάλει automatic client discovery χρησιμοποιώντας τον avahi, οπότε δεν θα χρειάζεται το script. Για να εγκαταστήσετε την πιο πρόσφατη έκδοση αρκεί να προσθέσετε στο /etc/apt/sources.list σας την παρακάτω γραμμή:
deb http://ppa.launchpad.net/edubuntu-italc-devel/ubuntu hardy main

alkisg

#2
Σκριπτάκι για προσθήκη νέας τάξης και πολλών μαθητών / χρηστών.

Edit το /etc/adduser.conf ώστε να έχει:
Κώδικας: shell
EXTRA_GROUPS="cdrom floppy dialout tape dip adm plugdev fax audio scanner fuse video"
ADD_EXTRA_GROUPS=1

για να δηλώνονται αυτόματα οι νέοι χρήστες στα κατάλληλα groups.

Αποθηκεύουμε το παρακάτω ως create_users.sh, το κάνουμε εκτελέσιμο (chmod +x create_users.sh), το τροποποιούμε ανάλογα με τις ανάγκες μας και εν τέλει το εκτελούμε (sudo ./create_users.sh).
Κώδικας: shell
#!/bin/bash
# copyright 2008 Alkis Georgopoulos <https://alkisg.mysch.gr/>
# distributed under the terms of the GNU General Public License version 3
# or any later version.

# Sample script to create many users, e.g. guest01 to guest20.

# This script should be run with sudo
if [ "$UID" != "0" ]; then
    echo "This script must be run with root privileges"
    echo "Usage: sudo $0"
    exit 1
fi

# group to create and add users to:
my_group="guests"
# usernames, this will become guest01, guest02 etc
my_username="guest"
# passwords, this will become pass01, pass02 etc
my_password="pass"

# comment this if the group already exists
addgroup $my_group

# trick to get 01, 02, ..., 20 with zeroes in front: count from 101 to 120 and remove the first 1
for (( i=101; $i<=120; i++ )); do
	adduser --ingroup $my_group --disabled-password --gecos $my_username${i:1} $my_username${i:1};
	echo -e "$my_password${i:1}\n$my_password${i:1}\n" | sudo passwd $my_username${i:1}
done


(Προσωπική) σημείωση για την μετέπειτα batch αλλαγή των real names: το chfn (change finger) δε δέχεται ελληνικά ονόματα, αλλά το usermod δέχεται.

Wizard

Μια λύση για μαζικό password που μπαίνει στο ίδιο το script της δημιουργίας των users:
echo user01:12345678 >> temp

και αφού γίνει για όλους τους χρήστες, στο τέλος δίνεις:
cat temp | sudo chpasswd
rm -f temp


Ερώτηση: τα secondary groups, όπως cdrom, floppy κλπ, τι ρόλο παίζουν; Έφτιαξα έναν normal user χωρίς κανένα από αυτά τα groups και όλα έπαιζαν κανονικά...  ???

alkisg

#4
edit: Διόρθωσα το script ώστε να χρησιμοποιεί sudo passwd και echo για να μη χρειάζεται ενδιάμεσα αρχεία.


Thanks, δεν το σκέφτηκα το sudo chpasswd. Αν και πλέον σκέφτομαι να κάνω το εξής:
Το authentication/login των χρηστών εκτός από τον κλασσικό τρόπο μπορεί να γίνεται και με το PAM stack το οποίο μπορεί να χρησιμοποιεί modules. Έτσι, είναι δυνατή η κατασκευή ενός module, το οποίο θα επιτρέπει σε οποιονδήποτε έχει λογαριασμό στο ΠΣΔ να κάνει login στο εργαστήριο με το σχολικό email/password.

Από το ΠΣΔ δίνουν email στους μαθητές Γ΄ Γυμνασίου. Ανάφερα στο helpdesk ότι στη Γ΄ Γυμνασίου δεν υπάρχει email στη σχολική ύλη, αλλά υπάρχει στις Α΄ και Β΄, και νομίζω ότι θα το κάνουν από του χρόνου για όλες τις τάξεις.

Έτσι, πρώτη δουλειά με το που θα μπαίνουν οι μαθητές Α΄ Γυμνασίου θα είναι να κάνουν login σαν guest, να πάνε να βγάζουν mail στο ΠΣΔ, και πλέον θα συνδέονται στο εργαστήριο με το username/password του ΠΣΔ!!! Έτσι γλυτώνουμε τελείως από τη δημιουργία/διαχείριση χρηστών. Βολικότατο, αν θέλουμε μάλιστα μπορούμε να επιτρέπουμε και σε οποιοσδήποτε καθηγητή να έχει πρόσβαση (εννοείται σαν χρήστης, όχι root), και όταν κάποιος αλλάζει password στο ΠΣΔ θα ισχύει αυτόματα και για το server μας.

Για τα cdrom/floppy: νομίζω το cdrom δίνει δικαιώματα εγγραφής cd και το floppy δικαίωμα εγγραφής σε δισκέτα (locally).
http://ubuntuforums.org/showthread.php?t=649354
https://lists.ubuntu.com/archives/ubuntu-gr/2006-March/000359.html

Π.χ. ls -lh /dev/fd0 πρέπει να λέει ότι ανήκει στο group floppy.

Wizard

Αυτόματα θα δημιουργείται το home folder με τη λύση που προτείνεις;
Σχετικά με τα secondary groups, λες ότι είναι για εγγραφή, ε; Θα το κοιτάξω, γιατί χωρίς ούτε ένα group, μπορούσα άνετα να διαβάσω cdrom, usb, να μπω στο Internet κλπ.
Κάποια στιγμή θα ασχοληθώ και με τα πακέτα quota και quotatool για να μπαίνουν περιορισμοί στα μεγέθη των home folders.

alkisg

Ναι, θα δημιουργείται αυτόματα home folder. Υπάρχει αντίστοιχο πρόγραμμα και για τα Windows, το pGina, με το οποίο κάνεις ό,τι θες, π.χ. μπορείς να επιτρέψεις να συνδέονται χρήστες (και να δημιουργούνται αυτόματα οι σχετικοί λογαριασμοί) για όποιον έχει pop3 / ftp / ldap / mysql / slashdot κτλ λογαριασμό!
Για περισσότερα (για τα Windows), http://www.pgina.org/

Σκέφτομαι και την άλλη εναλλακτική, το Σεπτέμβριο να μπαίνουν οι μαθητές στο εργαστήριο και να βλέπουν σαν αρχική οθόνη μια ιστοσελίδα (στον τοπικό apache), στην οποία να συμπληρώνουν τα στοιχεία τους και το επιθυμητό username, και η php από πίσω να καλεί κάποια scripts και να τους δημιουργεί αυτόματα λογαριασμό. Είχα κάνει κάτι σχετικό για την επιμόρφωση των Πληροφορικών, θα το πακετάρω με κάποιον καλύτερο τρόπο και θα το ανεβάσω μόλις ετοιμαστεί.

alkisg

Διαγραφή των ρυθμίσεων της πάνω και κάτω μπάρας για όλους τους χρήστες, ώστε την επόμενη φορά που θα κάνουν login να επανέλθουν οι προεπιλογές.

Χρειάζεται π.χ. μετά την αναβάθμιση από Ubuntu 8.04 σε Ubuntu 8.10, επειδή έχουν αλλάξει τα προεπιλεγμένα εικονίδια του panel (μακάρι να υπήρχε κάτι τόσο εύκολο και για την αναβάθμιση από XP σε Vista!!!  ;) )

Κώδικας: shell
sudo rm -rf /home/*/.gconf/apps/panel/

alkisg

Παράθεση από: Wizard στις 19 Μαΐου 2008, 07:48:50 ΜΜ
Ερώτηση: τα secondary groups, όπως cdrom, floppy κλπ, τι ρόλο παίζουν; Έφτιαξα έναν normal user χωρίς κανένα από αυτά τα groups και όλα έπαιζαν κανονικά...  ???

Τελικά πάνε για κατάργηση: https://wiki.ubuntu.com/DesktopTeam/Specs/Intrepid/DevicePermissions

alkisg

Έλεγχος του ιστορικού του firefox όλων των μαθητών για συγκεκριμένες λέξεις-κλειδιά.
Για παράδειγμα, οι παρακάτω εντολές εμφανίζουν ποιοι μαθητές έχουν επισκεφθεί το facebook:

Κώδικας: shell
sudo su
for f in /home/*/.mozilla/firefox/*.default/places.sqlite
do
	echo "==> Γίνεται έλεγχος του αρχείου $f:"
	echo "
	select * from moz_places where url like '%facebook%';
	.quit" | 
	sqlite3 $f
done


Με "delete from" αντί για "select * from" μπορούμε να σβήσουμε τις σχετικές εγγραφές από το ιστορικό των μαθητών.
Ο firefox πρέπει να είναι κλειστός κατά την εκτέλεση της εντολής γιατί αλλιώς το places.sqlite είναι κλειδωμένο.

alkisg

#10
Το παρακάτω είναι κάτι αντίστοιχο με την απενεργοποίηση του UAC των Windows, δηλαδή επιτρέπει σε ορισμένους χρήστες να εκτελούν διαχειριστικές εργασίες χωρίς να χρειάζεται να εισάγουν κάθε φορά τον κωδικό τους. Δηλαδή ευκολία σε βάρος της ασφάλειας.

Από ένα τερματικό:
Κώδικας: shell
sudo VISUAL=gedit visudo


Θα ανοίξει ο κειμενογράφος, προσθέστε στο τέλος του αρχείου μια γραμμή σαν την παρακάτω::
...

# Allow user "teacher" to sudo without a password:
teacher ALL=NOPASSWD: ALL


Αποθηκεύστε το αρχείο και κλείστε τελείως το gedit για να γίνει η ενημέρωση. Πλέον ο χρήστης "teacher" θα μπορεί να εκτελεί διαχειριστικές εργασίες (synaptic, sudo apt-get κτλ) χωρίς κωδικό.

vassthan

[Σκέφτομαι και την άλλη εναλλακτική, το Σεπτέμβριο να μπαίνουν οι μαθητές στο εργαστήριο και να βλέπουν σαν αρχική οθόνη μια ιστοσελίδα (στον τοπικό apache), στην οποία να συμπληρώνουν τα στοιχεία τους και το επιθυμητό username, και η php από πίσω να καλεί κάποια scripts και να τους δημιουργεί αυτόματα λογαριασμό. Είχα κάνει κάτι σχετικό για την επιμόρφωση των Πληροφορικών, θα το πακετάρω με κάποιον καλύτερο τρόπο και θα το ανεβάσω μόλις ετοιμαστεί.]

Άλκη, αν θα μπορούσες να φτιάξεις κάτι τέτοιο, θα μας έλυνες τα χέρια.

Επίσης, αν μπορείς βάλε κάπου ένα παράδειγμα αρχείου .csv για μαζική εισαγωγή μαθητών.

Τέλος, να σημειώσω και εγώ ότι η δουλειά σου είναι καταπληκτική!!!
Συγχαρητήρια!!!!

alkisg

Παράθεση από: vassthan στις 09 Οκτ 2010, 12:47:02 ΜΜ
Άλκη, αν θα μπορούσες να φτιάξεις κάτι τέτοιο, θα μας έλυνες τα χέρια.
Αν και με τη μαζική δημιουργία χρηστών, την εισαγωγή από .csv και την εισαγωγή από λογαριασμούς του ΠΣΔ πιστεύω ότι έχουν καλυφθεί οι περισσότερες ανάγκες, δίκιο έχεις, υπάρχουν περιπτώσεις όπου η δυνατότητα απευθείας εγγραφής νέων χρηστών είναι βολική.

Όμως, αυτή τη στιγμή η οθόνη σύνδεσης των χρηστών (ldm) ξαναγράφεται σχεδόν εξαρχής στο LTSP από κάποιους developers. Δεν είναι η κατάλληλη εποχή για νέες προσθήκες. Αλλά αυτή η νέα υλοποίηση θα υποστηρίζει και plugins, οπότε μόλις με το καλό ετοιμαστεί, θα είναι σχετικά εύκολο να γράψω ένα plugin για τη δημιουργία νέων λογαριασμών κατά τη σύνδεση.

Δηλαδή, ο καθηγητής θα ενεργοποιεί το plugin, και οι μαθητές θα μπαίνουν απευθείας με ό,τι username/password θέλουν, και αυτό θα δημιουργεί αυτόματα το λογαριασμό τους. Μόλις τελειώσει η περίοδος εγγραφών ο καθηγητής θα απενεργοποιεί το plugin.

Επειδή νομίζω ότι είναι καλύτερα να μένουμε στις Long Term Support (LTS) εκδόσεις του Ubuntu που βγαίνουν κάθε δύο χρόνια, δεν θα το ετοιμάσω για την 11.04 που θα είναι έτοιμος ο νέος ldm, αλλά για την 12.04 που θα είναι η επόμενη LTS έκδοση - αν ξεχαστώ ξαναρίξε σύρμα.  ;)

Παράθεση από: vassthan στις 09 Οκτ 2010, 12:47:02 ΜΜ
Επίσης, αν μπορείς βάλε κάπου ένα παράδειγμα αρχείου .csv για μαζική εισαγωγή μαθητών.
Μπορείς απλά να κάνεις εξαγωγή ως .csv και να χρησιμοποιήσεις το αρχείο που θα παραχθεί ως υπόδειγμα.

vassthan

[Μπορείς απλά να κάνεις εξαγωγή ως .csv και να χρησιμοποιήσεις το αρχείο που θα παραχθεί ως υπόδειγμα.]

Αυτό ακριβώς προσπάθησα να κάνω αλλά δεν τα κατάφερα. Κράτησα τις επικεφαλίδες από το αρχείο .csv και τα στοιχεία από έναν μόνο χρήστη (στα οποία τροποποίησα: username, groupID, home folder, κλπ).  Στη συνέχεια όταν επιλέγω άνοιγμα του αρχείου .csv δεν κάνει τίποτα. Γι' αυτό ζήτησα ένα παράδειγμα αρχείου .csv!

Άλκη, ευχαριστώ για την άμεση απάντησή σου!

alkisg


  • Κάνεις εξαγωγή ως .csv.
  • Στη συνέχεια το ανοίγεις με το OpenOffice.
  • Στο διάλογο εισαγωγής, του λες ότι διαχωριστικό είναι ΜΟΝΟ το κόμμα.
  • Κάνεις αποθήκευση ως » κάποιο άλλο όνομα.
  • Του λες "ναι" στο διάλογο "Διατήρηση τρέχουσας μορφής".
  • Διαγράφεις τις γραμμές που θες, συμπληρώνεις όποιες θες, σώζεις.
    Εδώ να επισημάνω ότι η στήλη "Κρυπτογραφημένος κωδικός" χρησιμοποιείται για επαναφορά από backup εξαγωγής χρηστών, ενώ η στήλη "Κωδικός πρόσβασης" για νέους χρήστες.
  • Κάνεις εισαγωγή από .csv. Θα δεις κάτι σαν τη συνημμένη εικόνα.
  • Πας στο μενού Χρήστες » Προσθήκη των χρηστών στο σύστημα.

Επισυνάπτω κι ένα παράδειγμα users.csv, το οποίο παρήχθηκε από την "Εξαγωγή ως .csv".

vassthan

Άλκη ευχαριστώ!

Δούλεψε τέλεια στο σπίτι σε  VirtualBox!

Τώρα δοκιμή τη Δευτέρα στο σχολείο!

TaniDani

Ηλεκτρονική διαχείριση εργαστηρίου. (NetOp, iTalc, NetSupportSchool, Insight Teacher, ...)

Θέλω να εγκαταστήσω κάποιο πρόγραμμα ελέγχου του εργαστηρίου που να δουλεύει ως εξής:
Όταν οι μαθητές ανοίγουν τον υπολογιστή, να έχουν πρόσβασή εκτέλεσης μόνο βασικών προγραμμάτων όπως ζωγραφική, κειμενογράφος, αναπαραγωγής, χωρίς να μπορούν να εκτελέσουν κανένα από τα υπόλοιπα προγράμματα. (ανεξάρτητα από τον κεντρικό υπολογιστή.)
Να ξεκινάω το μάθημα μέσω του κεντρικού υπολογιστή, μπλοκάροντας τον οποιοδήποτε χειρισμό από αυτούς, και με το τέλος της διδασκαλίας να απελευθερώνω εγώ από τον κεντρικό υπολογιστή συγκεκριμένο πρόγραμμα όπου να εξασκούνται.
Αυτό που ουσιαστικά θέλω να πω είναι ότι σε περίπτωση που οι μαθητές κάνουν επανεκκίνηση του υπολογιστή, ή πατήσουν το CTRL-ESC, ή βγάλουν το καλώδιο δικτύου, να συνεχίζουν να μην έχουν πρόσβαση σε χειρισμό προγραμμάτων, με εξαίρεση κάποια προκαθορισμένα.
Έχει κάποιος εμπειρία να μου πει ποιο πρόγραμμα είναι κατάλληλο και τι πρέπει να προσέξω;

Ευχαριστώ,


thaaanos

Για διαμοιρασμό αρχείων στους μαθητές πχ στην επιφάνεια εργασίας της α1 τάξης

Κώδικας: bash
ls -db /home/a1*/Επιφάνεια\ εργασίας | xargs -n 1 cp _file_


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