AbulÉdu - Les Forums

Les forums d'AbulÉdu

Extinction distante des postes (TX ou lourds)

(6 messages)

Mots clefs :

Pas encore de mot clef.

  1. Guy Larrieu
    Administrator

    Bonjour,

    Je me permets la reprise d'une question postée sur la ML qui n'a pas eu beaucoup de succès :).

    Nous commençons à rencontrer pas mal de cas où les professeurs et directeurs oublient d'éteindre les postes de la salle informatique le soir voire le week-end.

    Vu le mécanisme du bouton d'extinction, j'imagine qu'il est possible de lancer une commande (ou un script) pour éteindre automatiquement les postes depuis le serveur. Autant, sur des postes lourds, un ssh halt me semble simple, autant sur les TX je ne vois pas comment réaliser la chose.

    Si quelqu'un a une solution...

    Guy Larrieu.

    Posté il y a 8 mois #
  2. frucot
    Administrator

    Peut-être quelque chose à creuser par là ?
    https://help.ubuntu.com/community/UbuntuLTSP/AutomatedTCShutodwn

    Posté il y a 8 mois #
  3. Guy Larrieu
    Administrator

    Merci Jean-Louis,

    Je n'avais pas trouvé cette page-là, je vais fouiller dans ce sens.

    Guy.

    Posté il y a 7 mois #
  4. Guy Larrieu
    Administrator

    Bonjour,

    Je n'ai pas pu utiliser la méthode préconisée, impossible (ici ou sur la version de LTSP d'AbulÉdu ?) d'installer cron ou sshd après un chroot dans /opt/ltsp/i386/...

    J'ai néanmoins trouvé la solution en passant par nc. Je me suis inspiré de cette solution basée sur ltsp5 mais qui fonctionne aussi sur notre version.

    J'ai par contre réécrit le script pour qu'il corresponde à nos besoins.

    Je le laisse maturer quelques jours pour vérifier s'il assure le service et est exempt de bugs puis je le publierai / l'enverrai à Eric.

    Guy Larrieu

    Posté il y a 7 mois #
  5. Guy Larrieu
    Administrator

    Bonjour,

    Comme promis, je publie vu que ça rend service chez nous, sans poser de problème. Par contre, ça ne concerne que les TX pour l'instant.

    Le script se compose de deux parties. Une partie côté client dans le rc.local des TXs qui ouvre et écoute un port, une partie côté serveur qui lance l'appel à l'heure choisie, via cron. Je ne suis pas sûr que ce soit top côté sécurité, mais vu qu'on est en local...

    Le script lui-même, script_extinction_auto, est nommé à discrétion et lancé via CRON.

    /opt/ltsp/i386/etc/rc.local

    #!/bin/sh -e
    /usr/bin/nohup /bin/nc -lp 454545 -c 'uname -n;halt;' &
    exit 0

    /usr/local/bin/script_extinction_auto

    #!/bin/bash
    ######################################################################
    ## Script qui permet l'extinction automatisee des TXs pour Albiedu  ##
    ## 08/12/09 - Mairie d'Albi. derniere maj: 06/10/10		    ##
    ######################################################################
    ## La premiere partie du script est executee coté client, par le TX.
    ## Nous faisons donc en sorte qu'elle se lance automatiquement en placant dans
    ## /opt/ltsp/i386/etc/rc.local
    ## -- #!/bin/sh -e
    ## -- ## Fait partie du script d'extinction automatique des postes
    ## -- ## Lance netcat en ecoute sur le port 454545. En cas d'appel sur ce port,
    ## -- ## nc enverra son nom de machine qui lancera un halt
    ## -- ## nohup sert conservé le processusmalgre la fin du script.
    ## -- /usr/bin/nohup /bin/nc -lp 313131 -c 'uname -n;halt;' &
    ## -- exit 0
    #######################################################################
    ##La seconde partie est lancee depuis le serveur.
    ## On commence par recuperer les IP des postes allumes via horizon-who,
    ## puis on lance l'appel netcat sur l'adresse concernee et on log la reponse,
    ## ainsi que les eventuels messages d'erreurs.
    for x in /usr/bin/horizon-who |/usr/bin/cut -d " " -f 5 | /bin/sed -e "s/[()]//g" ; do /bin/nc -w 5 -q 2 $x 313131 2>&1 | /usr/bin/logger -p local0.info -t "EXTINCTION_AUTO" ; done
    ## Puis on nettoie tous les processus qui restent des utilisateurs (different de root) qui etaient eventuellement logges.
    for x in <code>/usr/bin/horizon-who |/usr/bin/cut -d &quot; &quot; -f 1</code> ; do if [ $x != root ]; then /usr/bin/killall -u $x; fi; done

    Si ça peut servir !

    Je mettrai à jour au fur et à mesure s'il y a des modifications !

    Posté il y a 6 mois #
  6. Guy Larrieu
    Administrator

    Hum...

    Depuis que j'ai posté, je constate des erreurs !

    Visiblement, le script laisse des postes "fantômes", vus par horizon-who mais pas pingables (donc impossibles à contacter via nc). Je regarde ça...

    Posté il y a 6 mois #

Répondre

(required)

Balises autorisées : a blockquote code em strong ul ol li cite.
Vous pouvez mettre du code entre guillemets inversés ( ` ).