Το Στέκι των Πληροφορικών

Γενικά => Τεχνική υποστήριξη => Linux => Μήνυμα ξεκίνησε από: alkisg στις 27 Σεπ 2009, 04:59:43 ΜΜ

Τίτλος: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρονα
Αποστολή από: alkisg στις 27 Σεπ 2009, 04:59:43 ΜΜ
Τα παρακάτω αφορούν εργαστήρια με κανονικές εγκαταστάσεις Ubuntu, όχι εργαστήρια με thin clients (LTSP).

Το πρόβλημα: έχουμε π.χ. 12 PC και θέλουμε σε όλα αυτά να εκτελέσουμε κάποιες εντολές, για παράδειγμα να εγκαταστήσουμε το kturtle ή να επεξεργαστούμε ένα αρχείο.

Η λύση: clusterssh (http://sourceforge.net/apps/mediawiki/clusterssh/index.php?title=FAQ)  ;)

Ο πιο γρήγορος τρόπος να καταλάβει κανείς τι κάνει το clusterssh είναι να δει τη συνημμένη εικόνα: στο μικρό παραθυράκι γράφουμε τις εντολές, και αυτές εκτελούνται ταυτόχρονα σε *όλους* τους clients! Μάλιστα, εάν υπάρχει λόγος μπορούμε να επεξεργαστούμε χωριστά κάποιον από τους clients.

Η εγκατάστασή του γίνεται απλά επιλέγοντας το πακέτο clusterssh από το synaptic (ή, εκτελώντας sudo apt-get install clusterssh). Δεν χρειάζεται να εγκατασταθεί στους clients παρά μόνο στο server.

Το clusterssh έχει ένα προβληματάκι με τα ελληνικά fonts, για να λυθεί χρειάζεται να εκτελεστεί η παρακάτω εντολή:
Κώδικας [Επιλογή]

echo 'terminal_font=-misc-fixed-medium-r-normal--0-0-75-75-c-0-iso10646-1' | sudo tee /etc/csshrc


Εάν όμως έχουμε ήδη τρέξει το cssh πριν διορθώσουμε τα ελληνικά, τότε έχει δημιουργηθεί ένα αρχείο ρυθμίσεων για τον τρέχοντα χρήστη, και πρέπει να το σβήσουμε για να ισχύσουν οι κεντρικές ρυθμίσεις:
Κώδικας [Επιλογή]

rm ~/.csshrc


Στη συνέχεια, πηγαίνουμε στο μενού Εφαρμογές » Διαδίκτυο, και κάνουμε δεξί κλικ στο ClusterSSH, και επιλέγουμε «Προσθήκη του εκκινητή στην επιφάνεια εργασίας».
Θα εμφανιστεί το εικονίδιο του ClusterSSH στην επιφάνεια εργασίας μας. Κάνουμε δεξί κλικ » Ιδιότητες πάνω του, και στο πεδίο «Εντολή:», συμπληρώνουμε κάτι σαν το παρακάτω:
Κώδικας [Επιλογή]

cssh client01.local client02.local client03.local client04.local client05.local client06.local


Αν θέλουμε να συνδεθούμε με διαφορετικό user, μπορούμε να βάλουμε
Κώδικας [Επιλογή]

cssh a1@client01.local a1@client02.local a1@client03.local a1@client04.local a1@client05.local a1@client06.local


Θα δούμε 6 τερματικά (στο συγκεκριμένο παράδειγμα) να ανοίγουν ταυτόχρονα, όπου και μπορούμε να δώσουμε τον κωδικό μας για να συνδεθούμε (σε όλα μαζί) και να συνεχίσουμε με όποιες εντολές χρειαζόμαστε (π.χ. sudo apt-get dist-upgrade => κάνουμε ενημέρωση όλων των προγραμμάτων σε όλο το εργαστήριο ταυτόχρονα ;)).

Για σύνδεση χωρίς κωδικό πρόσβασης, δείτε το θέμα Απομακρυσμένες συνδέσεις χωρίς κωδικό (passwordless ssh) (https://alkisg.mysch.gr/steki/index.php?topic=2293.0)
Τίτλος: Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρονα
Αποστολή από: alkisg στις 15 Οκτ 2009, 09:51:07 ΠΜ
Για την παρακάτω ειδική περίπτωση, χρειάζεται μια ρυθμισούλα:
* Αν έχουμε πάνω από 10 clients, π.χ. 12,
* και συνδεθούμε ταυτόχρονα σε όλους με το clusterssh,
* και πάμε από τους clients να συνδεθούμε με ssh ή scp στον server,
τότε δημιουργούνται 12 ταυτόχρονα connections στον server, τα οποία για λίγα δευτερόλεπτα δεν θεωρούνται πιστοποιημένα (δηλαδή όταν έχουμε δώσει το username και πριν προλάβουμε να δώσουμε το password).

Το προεπιλεγμένο όριο για μη πιστοποιημένες συνδέσεις ssh είναι 10. Άρα, οι 2 clients θα έχουν πρόβλημα και δεν θα δουλέψει η εντολή scp (θα βγάλει μήνυμα "connection closed by remote host").

Η ρύθμιση για να το λύσουμε είναι στο αρχείο /etc/ssh/sshd_config του server να αλλάξουμε τη γραμμή
  #MaxStartups 10:30:60
σε
  MaxStartups 20:30:60
και να επανεκκινήσουμε το ssh με
  sudo invoke-rc.d ssh force-reload
Τίτλος: Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρονα
Αποστολή από: Δημήτρης Δαλαγιώργος στις 19 Οκτ 2009, 04:17:42 ΜΜ
Θεός!

Κι αναρωτιόμουνα αν υπάρχει κάτι τέτοιο. Είχα καλομάθει με το NetOp που μπορούσα να τρέχω εντολές ταυτόχρονα σε όλους τους υπολογιστές (έκανε την εγκατάσταση εφαρμογών παιχνιδάκι) και τώρα στο Ubuntu πήγαινα μ' ελαφρά πηδηματάκια από υπολογιστή σε υπολογιστή.

Τέλεια, θα το δοκιμάσω αύριο κιόλας!
Τίτλος: Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρονα
Αποστολή από: Δημήτρης Δαλαγιώργος στις 19 Οκτ 2009, 04:26:37 ΜΜ
Η εντολή για την εγκατάστασή του είναι

Κώδικας [Επιλογή]
sudo aptitude install clusterssh;

Επίσης, προσπαθεί να συνδεθεί χρησιμοποιώντας ως username το ίδιο με του χρήστη που το καλεί, δηλαδή, αν εγώ κάθομαι στον server έχοντας κάνει login με τον χρήστη server_admin, προσπαθεί να συνδεθεί στον client με τον χρήστη server_admin, ο οποίος όμως, πολύ πιθανόν να μην υπάρχει. Πώς καθορίζουμε με ποιο χρήστη θα προσπαθεί να συνδεθεί;
Τίτλος: Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρονα
Αποστολή από: alkisg στις 19 Οκτ 2009, 06:29:17 ΜΜ
Συμπλήρωσα τις αρχικές οδηγίες ώστε να περιλαμβάνουν παράδειγμα με σύνδεση διαφορετικού χρήστη.
Τίτλος: Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρονα
Αποστολή από: Δημήτρης Δαλαγιώργος στις 19 Οκτ 2009, 10:04:54 ΜΜ
Παράθεση από: alkisg στις 01 Οκτ 2009, 10:21:55 ΠΜ
Το clusterssh έχει ένα προβληματάκι με τα ελληνικά fonts, για να λυθεί χρειάζεται να εκτελεστεί η παρακάτω εντολή:

Κώδικας [Επιλογή]

echo 'terminal_font=-misc-fixed-medium-r-normal--0-0-75-75-c-0-iso10646-1' | sudo tee /etc/csshrc


Δε μου δούλεψε!  :(
Τίτλος: Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρονα
Αποστολή από: alkisg στις 19 Οκτ 2009, 11:34:42 ΜΜ
@#(*&$(@# ούτε εμένα!!!
Το δοκίμασα στο σπίτι, τζίφος. Μεθαύριο θα κοιτάξω να δω τι έκανα στο σχολείο, προφανώς έκανα και κάποια άλλη ρύθμιση...
Τίτλος: Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρονα
Αποστολή από: Δημήτρης Δαλαγιώργος στις 21 Οκτ 2009, 12:44:21 ΜΜ
Παράθεση από: alkisg στις 19 Οκτ 2009, 11:34:42 ΜΜ
@#(*&$(@# ούτε εμένα!!!
Το δοκίμασα στο σπίτι, τζίφος. Μεθαύριο θα κοιτάξω να δω τι έκανα στο σχολείο, προφανώς έκανα και κάποια άλλη ρύθμιση...

Έβγαλες άκρη;
Τίτλος: Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρονα
Αποστολή από: alkisg στις 26 Οκτ 2009, 11:42:17 ΠΜ
Ναι τελικά σωστά τα είχα γράψει,
το πρόβλημα ήταν ότι το clusterssh δημιουργεί αντίγραφο (!) των κεντρικών ρυθμίσεων για τον τρέχοντα χρήστη, κι άρα θέλουν σβήσιμο για να ενεργοποιηθούν οι κεντρικές ρυθμίσεις (rm ~/.csshrc).

Άλλαξα και τις αρχικές οδηγίες ώστε να το περιέχουν:
https://alkisg.mysch.gr/steki/index.php?topic=2214.msg17553#msg17553
Τίτλος: Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρονα
Αποστολή από: Δημήτρης Δαλαγιώργος στις 30 Οκτ 2009, 05:10:30 ΜΜ
Μπορείς να τρέχεις το cssh μέσα απ' το NX; Εγώ όχι...  :'(
Τίτλος: Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρονα
Αποστολή από: alkisg στις 30 Οκτ 2009, 05:42:32 ΜΜ
Ναι, κανονικά... Τι μήνυμα λάθους σου βγάζει; Δες και το /var/log/auth.log.
Τίτλος: Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρονα
Αποστολή από: Δημήτρης Δαλαγιώργος στις 30 Οκτ 2009, 05:53:53 ΜΜ
Συνδέομαι κανονικά με τον server με το NX και προσπαθώ ν' ανοίξω το cssh. Πατάω το κουμπάκι του να τρέξει και δεν κάνει τίποτα. Δίνω cssh στο command prompt και μου βγάζει:

Fatal: Unrecognised font used (-misc-fixed-medium-r-normal--0-0-75-75-c-0-iso10646-1).
Please amend $HOME/.csshrc with a valid font (see man page).


.csshrc στο $HOME μου δεν υπάρχει... Να υποθέσω ότι δεν του αρέσει το font που χρησιμοποιεί το NX;

Υ.Γ. Πώς γυρνάω το πληκτρολόγιο στα ελληνικά στο NX;
Τίτλος: Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρονα
Αποστολή από: alkisg στις 30 Οκτ 2009, 06:29:17 ΜΜ
Αααα από Windows προσπαθείς να μπεις; (εμένα δεν έχει κανένα πρόβλημα, αλλά μπαίνω από Linux).

Δοκίμασε να σβήσεις τελείως το /etc/csshrc και το ~/.csshrc αν τυχόν υπάρχει,
ή τρέξε xfontsel για να βρεις κάποιο font που να το έχει ο nx client για Windows (οπότε και να το βάλεις στο /etc/csshrc).
Τίτλος: Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρονα
Αποστολή από: Δημήτρης Δαλαγιώργος στις 30 Οκτ 2009, 06:32:37 ΜΜ
Παράθεση από: alkisg στις 30 Οκτ 2009, 06:29:17 ΜΜ
Δοκίμασε να σβήσεις τελείως το /etc/csshrc και το ~/.csshrc αν τυχόν υπάρχει,

Αν σβήσω το /etc/csshrc δε θά 'χει μετά πρόβλημα με τα ελληνικά;
Τίτλος: Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρο
Αποστολή από: Δημήτρης Δαλαγιώργος στις 24 Νοε 2009, 07:44:25 ΜΜ
Δύο ενοχλητικά προβλήματα του cssh:

1) Αν για οποιονδήποτε λόγο ένας απ' τους υπολογιστές του cluster είναι εκτός σύνδεσης (βγήκε το καλώδιο δικτύου, κάηκε το τροφοδοτικό, οτιδήποτε) το cssh κολλάει και δεν συνδέεται ούτε στους υπόλοιπους υπολογιστές του cluster, οπότε προς το παρόν φτιάχνω ξεχωριστό cluster χωρίς τον προβληματικό υπολογιστή. Δε θά 'πρεπε όμως, να κάνει ένα timeout μέσα σε ένα εύλογο χρονικό διάστημα και να αφήνει τα υπόλοιπα παράθυρα να δουλέψουν και να συνδεθούν στους υπόλοιπους υπολογιστές;

2) Δεν υποστηρίζει τονισμένα ελληνικά. Οπότε αν προσπαθήσεις, για παράδειγμα, να μπεις στο φάκελο 'Έγγραφα' ενός χρήστη, πολύ απλά δεν μπορείς, όχι γιατί δεν έχεις τα κατάλληλα δικαιώματα, αλλά γιατί δεν μπορείς να πληκτρολογήσεις το Έ!
Τίτλος: Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρο
Αποστολή από: alkisg στις 24 Νοε 2009, 09:01:59 ΜΜ
Δεν έχω κανένα από τα δύο προβλήματα που λες. Και timeout κάνει όταν ένας client είναι off και συνεχίζει με τους επόμενους, και τονισμένα ελληνικά παίρνει.

Για το timeout, κάνε man cssh και ψάξε για τη λέξη ConnectTimeout, μήπως σε βοηθήσει αυτή η επιλογή του ssh.
Για τα ελληνικά, μήπως στο κάνει όταν συνδέεσαι με nx, και είναι πρόβλημα του nx των Windows;
Τίτλος: Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρο
Αποστολή από: Δημήτρης Δαλαγιώργος στις 24 Νοε 2009, 09:37:51 ΜΜ
Παράθεση από: alkisg στις 24 Νοε 2009, 09:01:59 ΜΜ

Για τα ελληνικά, μήπως στο κάνει όταν συνδέεσαι με nx, και είναι πρόβλημα του nx των Windows;

Όχι, στο σχολείο μου τό 'κανε, σε server με Ubuntu 9.10
Τίτλος: Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρο
Αποστολή από: alkisg στις 24 Νοε 2009, 09:50:08 ΜΜ
(https://alkisg.mysch.gr/steki/index.php?action=dlattach;topic=2214.0;attach=1196;image)
Τίτλος: Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρο
Αποστολή από: Δημήτρης Δαλαγιώργος στις 25 Νοε 2009, 10:32:25 ΠΜ
Όταν γράφω στο παραθυράκι του cssh δεν παίρνει τα ελληνικά με τόνο. Όταν γράφω απευθείας στο terminal ενός client, τα ελληνικά με τόνο εμφανίζονται. Με άλλα λόγια, αν θέλω μαζικά να γράψω ελληνικά με τόνο, δεν μπορώ:
Τίτλος: Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρο
Αποστολή από: Δημήτρης Δαλαγιώργος στις 25 Νοε 2009, 10:41:08 ΠΜ
Όταν δε, δοκιμάσω να συνδεθώ με τον υπολογιστή που είναι down τρέχοντας το cssh από τερματικό μου βγάζει:

dimitrios@Server:~$ cssh client12.local
Can't call method "name" on an undefined value at /usr/bin/cssh line 988.


δίνοντας

dimitrios@Server:~$ cssh lab01
Can't call method "name" on an undefined value at /usr/bin/cssh line 988.


μου εμφανίζει τα παράθυρα για κάθε άλλο client πλην του 12, χωρίς να συνδέεται με κανένα, βγάζει το παραπάνω μήνυμα λάθους, τερματίζει, αλλά τα παράθυρα μένουν "ορφανά"
Τίτλος: Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρο
Αποστολή από: alkisg στις 25 Νοε 2009, 11:13:42 ΠΜ
Το πρόβλημα με τα hostnames τελικά υπάρχει στην Karmic που έχεις αλλά όχι στην Jaunty που έχω, γι' αυτό και τα βλέπουμε διαφορετικά. :)
Του το αναφέρανε στις 22 Σεπτεμβρίου: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=547931
και δυο μέρες μετά έβγαλε νέα έκδοση (3.27) (http://freshmeat.net/projects/clusterssh/) στην οποία είχε λύσει το πρόβλημα!
(τα καλά του open source, η Microsoft έκανε 6 μήνες να λύσει το bug που της είχα στείλει ότι το SP2 των XP έκοβε στη μέση τα αποστελλόμενα emails...)

Κάποια στιγμή αργότερα σήμερα θα αντιγράψω τη νέα αυτή έκδοση από την 10.04 στο αποθετήριο ελέγχου ενημερώσεων ΣΕΠΕΗΥ (https://launchpad.net/~ts.sch.gr/+archive/proposed). Εφόσον δεις ότι λύνει το πρόβλημα χωρίς να δημιουργεί καινούργια, πες ένα ΟΚ να το περάσω και στο κανονικό αποθετήριο, για να σταλεί αυτόματα και σε όλα τα εργαστήρια.


Για το πρόβλημα με τα ελληνικά πιστεύω ότι καλύτερα θα είναι να το αναφέρεις στον bug tracker στο sourceforge, παρά στο launchpad.
http://sourceforge.net/apps/mediawiki/clusterssh/index.php?title=Main_Page
Τίτλος: Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρο
Αποστολή από: Δημήτρης Δαλαγιώργος στις 24 Νοε 2010, 09:24:13 ΜΜ
Παράθεση από: alkisg στις 30 Οκτ 2009, 06:29:17 ΜΜ
Αααα από Windows προσπαθείς να μπεις; (εμένα δεν έχει κανένα πρόβλημα, αλλά μπαίνω από Linux).

Δοκίμασε να σβήσεις τελείως το /etc/csshrc και το ~/.csshrc αν τυχόν υπάρχει,
ή τρέξε xfontsel για να βρεις κάποιο font που να το έχει ο nx client για Windows (οπότε και να το βάλεις στο /etc/csshrc).

Εγκατέστησα στον υπολογιστή μου όλες τις επιπλέον γραμματοσειρές που υπάρχουν στο site της NX, έτρεξα το xfontsel για να διαλέξω ένα font με encoding iso8859-7, όρισα τη συγκεκριμένη γραμματοσειρά στο .csshrc αλλά εξακολουθεί να μη μου δείχνει ελληνικούς χαρακτήρες! Καμιά ιδέα;
Τίτλος: Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρο
Αποστολή από: alkisg στις 24 Νοε 2010, 11:04:45 ΜΜ
Το clusterssh δεν το χρησιμοποιώ πια εδώ και κανά χρόνο, από όταν ξεκινήσαμε την ανάπτυξη των fat clients. Και Windows πολύ σπάνια ανοίγω, οπότε είναι πολύ δύσκολο να αναπαραγάγω το πρόβλημα που λες. Αν δεν μπορεί να βοηθήσει κάποιος άλλος θα πρότεινα να στείλεις mail στη λίστα του clusterssh ή να ρωτήσεις στο κανάλι #xorg στο IRC.

Αν κατάλαβα όμως καλά, το πρόβλημα είναι ότι ο nx client για Windows δεν έχει ελληνικές γραμματοσειρές (ούτε οι extra έχουν), και έτσι προγράμματα όπως το cssh και το xterm που χρησιμοποιούν τις γραμματοσειρές του nx αντί για αυτές του Linux server, δεν δείχνουν ελληνικά.

Δοκίμασε λοιπόν να πεις στο xterm να χρησιμοποιήσει κάποια γραμματοσειρά του Linux server, ως εξής:
Κώδικας [Επιλογή]

cssh server -t '-fa "-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1"'