Problème avec mon ondulateur

Bonjour,

Mon PC est relié à mon onduleur APC, et quand j'éteins mon PC, l'APC s'éteint lui aussi. J'aimerais lui envoyer une commande shell pour lui "dire" de s'éteindre dans au bout d'un certain temps.

Sauriez-vous comment faire ?

2 réponses

  1. Bonjour
    Si vous branchez et allumez un autre élément (en +) que votre PC sur cet onduleur, genre une petite lampe ou un réveil..
    L'onduleur s'éteint il aussi quand vous éteignez l'ordinateur ?
    L'onduleur n'est pas fait pour s'éteindre automatiquement sauf "peut être" s'il est raccordé avec un câble USB/RJ50 au PC et configuré avec l'appli spécifique de l'APC...
    A+
    1. Modérateur
      Bonjour,

      En admettant que la machine distance soit joignable par
      ssh
      , alors tu peux utiliser
      ssh
      pour transporter une commande vers une machine distance.

      Exemple :

      ssh user@machine "hostname"


      La commande
      ssh
      demandera le mot de passe de l'utilisateur
      user
      supposé créé machine
      machine
      . Il est possible de faire une authentification sûre et transparente à l'aide d'une clé ssh.

      La commande
      halt
      permet d'arrêter un ordinateur, mais nécessite des droits administrateur. Si ssh est bien configuré, l'utilisateur
      user
      ne peut pas être l'utilisateur
      root
      car par défaut ssh est configuré pour refuser les authentifications en root.
      • Activer les authentifications root via ssh est dangereux, donc le mieux est sans doute de faire en sorte que
        user
        ait le droit d'exécuter la commande
        halt
        .
      • Une meilleure approche consiste à utiliser
        sudo
        . Sans rentrer dans les détails de
        sudo
        , le plus simple est d'en faire un sudoer (en ajoutant cet utilisateur au groupe
        sudo
        ). Cela permet à
        user
        de lancer des commandes comme s'il était root après avoir saisi son propre mot de passe.


      Or le mot de passe demandé par
      sudo
      doit être saisi au niveau de la machine distante, alors comment faire ?
      • Première méthode, tu peux définir dans
        /etc/sudoers
        (de la machine distante, pour le profil user) la possibilité d'utiliser
        sudo
        sans mot de passe. C'est assez dangereux mais c'est une manière de faire. Mais c'est un choix très discutable en terme de sécurité.
      • Seconde méthode, tu utilises l'option
        -S
        de
        sudo
        pour transporter le mot de passe.


      Exemple :

      ssh user@machine "sudo -S halt"


      Reste à retarder la commande
      halt
      . Comme évoqué dans cette discussion il existe plusieurs manière de faire, principalement soit en utilisant
      sleep
      , soit en utilisant
      at
      .

      Exemple :

      ssh user@machine "sleep 3 && sudo -S halt"


      Malheureusement, cette commande est contraignante, car il faut attendre 3 secondes avant de pouvoir saisir le mot de passe. Pour contourner ce problème, tu peux écrire sur
      machine
      un script (disons
      /home/user/toto.sh
      ) contenant :

      #!/bin/bash
      sleep 3
      halt


      ... et que tu lanceras via
      ssh + sudo
      :

      ssh user@machine "sudo -S /home/user/toto.sh"


      Bonne chance