Αποστολέας Θέμα: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρονα  (Αναγνώστηκε 4589 φορές)

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5658
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Τα παρακάτω αφορούν εργαστήρια με κανονικές εγκαταστάσεις Ubuntu, όχι εργαστήρια με thin clients (LTSP).

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

Η λύση: clusterssh  ;)

Ο πιο γρήγορος τρόπος να καταλάβει κανείς τι κάνει το 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)

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5658
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρονα
« Απάντηση #1 στις: 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

Δημήτρης Δαλαγιώργος

  • Πληροφορικός Πανεπιστημίου Αθηνών
  • Πληροφορικοί Δυτικής Μακεδονίας
  • *
  • Μηνύματα: 376
Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρονα
« Απάντηση #2 στις: 19 Οκτ 2009, 04:17:42 μμ »
Θεός!

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

Τέλεια, θα το δοκιμάσω αύριο κιόλας!
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

Δημήτρης Δαλαγιώργος

  • Πληροφορικός Πανεπιστημίου Αθηνών
  • Πληροφορικοί Δυτικής Μακεδονίας
  • *
  • Μηνύματα: 376
Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρονα
« Απάντηση #3 στις: 19 Οκτ 2009, 04:26:37 μμ »
Η εντολή για την εγκατάστασή του είναι

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

Επίσης, προσπαθεί να συνδεθεί χρησιμοποιώντας ως username το ίδιο με του χρήστη που το καλεί, δηλαδή, αν εγώ κάθομαι στον server έχοντας κάνει login με τον χρήστη server_admin, προσπαθεί να συνδεθεί στον client με τον χρήστη server_admin, ο οποίος όμως, πολύ πιθανόν να μην υπάρχει. Πώς καθορίζουμε με ποιο χρήστη θα προσπαθεί να συνδεθεί;
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5658
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρονα
« Απάντηση #4 στις: 19 Οκτ 2009, 06:29:17 μμ »
Συμπλήρωσα τις αρχικές οδηγίες ώστε να περιλαμβάνουν παράδειγμα με σύνδεση διαφορετικού χρήστη.

Δημήτρης Δαλαγιώργος

  • Πληροφορικός Πανεπιστημίου Αθηνών
  • Πληροφορικοί Δυτικής Μακεδονίας
  • *
  • Μηνύματα: 376
Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρονα
« Απάντηση #5 στις: 19 Οκτ 2009, 10:04:54 μμ »
Το clusterssh έχει ένα προβληματάκι με τα ελληνικά fonts, για να λυθεί χρειάζεται να εκτελεστεί η παρακάτω εντολή:

Κώδικας: [Επιλογή]
echo 'terminal_font=-misc-fixed-medium-r-normal--0-0-75-75-c-0-iso10646-1' | sudo tee /etc/csshrc

Δε μου δούλεψε!  :(
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5658
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρονα
« Απάντηση #6 στις: 19 Οκτ 2009, 11:34:42 μμ »
@#(*&$(@# ούτε εμένα!!!
Το δοκίμασα στο σπίτι, τζίφος. Μεθαύριο θα κοιτάξω να δω τι έκανα στο σχολείο, προφανώς έκανα και κάποια άλλη ρύθμιση...

Δημήτρης Δαλαγιώργος

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

Έβγαλες άκρη;
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5658
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρονα
« Απάντηση #8 στις: 26 Οκτ 2009, 11:42:17 πμ »
Ναι τελικά σωστά τα είχα γράψει,
το πρόβλημα ήταν ότι το clusterssh δημιουργεί αντίγραφο (!) των κεντρικών ρυθμίσεων για τον τρέχοντα χρήστη, κι άρα θέλουν σβήσιμο για να ενεργοποιηθούν οι κεντρικές ρυθμίσεις (rm ~/.csshrc).

Άλλαξα και τις αρχικές οδηγίες ώστε να το περιέχουν:
https://alkisg.mysch.gr/steki/index.php?topic=2214.msg17553#msg17553

Δημήτρης Δαλαγιώργος

  • Πληροφορικός Πανεπιστημίου Αθηνών
  • Πληροφορικοί Δυτικής Μακεδονίας
  • *
  • Μηνύματα: 376
Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρονα
« Απάντηση #9 στις: 30 Οκτ 2009, 05:10:30 μμ »
Μπορείς να τρέχεις το cssh μέσα απ' το NX; Εγώ όχι...  :'(
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5658
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρονα
« Απάντηση #10 στις: 30 Οκτ 2009, 05:42:32 μμ »
Ναι, κανονικά... Τι μήνυμα λάθους σου βγάζει; Δες και το /var/log/auth.log.

Δημήτρης Δαλαγιώργος

  • Πληροφορικός Πανεπιστημίου Αθηνών
  • Πληροφορικοί Δυτικής Μακεδονίας
  • *
  • Μηνύματα: 376
Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρονα
« Απάντηση #11 στις: 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;
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5658
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρονα
« Απάντηση #12 στις: 30 Οκτ 2009, 06:29:17 μμ »
Αααα από Windows προσπαθείς να μπεις; (εμένα δεν έχει κανένα πρόβλημα, αλλά μπαίνω από Linux).

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

Δημήτρης Δαλαγιώργος

  • Πληροφορικός Πανεπιστημίου Αθηνών
  • Πληροφορικοί Δυτικής Μακεδονίας
  • *
  • Μηνύματα: 376
Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρονα
« Απάντηση #13 στις: 30 Οκτ 2009, 06:32:37 μμ »
Δοκίμασε να σβήσεις τελείως το /etc/csshrc και το ~/.csshrc αν τυχόν υπάρχει,

Αν σβήσω το /etc/csshrc δε θά 'χει μετά πρόβλημα με τα ελληνικά;
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

Δημήτρης Δαλαγιώργος

  • Πληροφορικός Πανεπιστημίου Αθηνών
  • Πληροφορικοί Δυτικής Μακεδονίας
  • *
  • Μηνύματα: 376
Απ: clusterssh: εκτέλεση εντολών σε όλους τους clients ταυτόχρο
« Απάντηση #14 στις: 24 Νοέ 2009, 07:44:25 μμ »
Δύο ενοχλητικά προβλήματα του cssh:

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

2) Δεν υποστηρίζει τονισμένα ελληνικά. Οπότε αν προσπαθήσεις, για παράδειγμα, να μπεις στο φάκελο 'Έγγραφα' ενός χρήστη, πολύ απλά δεν μπορείς, όχι γιατί δεν έχεις τα κατάλληλα δικαιώματα, αλλά γιατί δεν μπορείς να πληκτρολογήσεις το Έ!
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller