Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Script shell] Arrêter un serveur depuis un poste client

Exécuter la commande root dans un script

Sujet résolu
    25 février 2010 à 12:37:10

    Bonjour,

    J'ai un serveur Linux (Ubunutu) chez moi et j'aimerais pouvoir l'arrêter depuis mon poste client.
    le script se fait donc en 2 temps:
    • Se connecter au serveur en ssh
    • utiliser la commande "halt now"

    Pour la connexion en ssh dans le script c'est tout bon (identification automatique par clé RSA). Mais après pour arrêter le serveur en tant que root ça pose problème...

    Si je met dans mon script:
    ssh user@monserveur "touch test"
    

    le fichier "test" se crée sans souci :)

    Le problème est d'exécuter une commande en tant que root. Voilà le message d'erreur si je rajoute la commande sudo à la ligne précédente:
    sudo: no tty present and no askpass program specified


    Avez-vous une solution pà ce problème?
    J'aimerais bien ne pas avoir à taper le mot de passe de root (au pire, si je peux l'écrire en dur dans le script et j'enlève les droits de lecture à tout le monde). Sinon, si c'est pas possible, j'écrirai le mot de passe.

    Merci de votre aide! :)
    • Partager sur Facebook
    • Partager sur Twitter
      25 février 2010 à 13:03:31

      Salut,

      Le plus simple me semble d’autoriser l’utilisation de sudo /sbin/halt depuis ton compte utilisateur sans mot de passe, via une configuration adéquate de /etc/sudoers :
      ton_login  localhost = NOPASSWD: /sbin/halt


      Mesure bien ce que cela implique, cependant : quiconque capable de se connecter sous ton compte utilisateur sur ton serveur sera à même de l’arrêter. Surveille ta clef RSA, surtout si elle n’est pas protégée par une phrase de passe...
      • Partager sur Facebook
      • Partager sur Twitter
        25 février 2010 à 13:27:03

        Merci de ta réponse rapide! :)

        J'ai essayé mais malheureusement ça me met toujours le même message d'erreur. Par contre ça règle ma question numéro 2. Merci ! :D
        Merci aussi pour les remarques concernant la sécurité, mais pour l'utilisation que j'en fait et vu le mot de passe de mon user, ça ne pose aucun problème. ;)

        Si quelqu'un saurait comment éviter le message d'erreur suivant, ça serait vraiment cool! :D
        sudo: no tty present and no askpass program specified

        Merci d'avance! :D
        • Partager sur Facebook
        • Partager sur Twitter
          25 février 2010 à 13:37:33

          Hum, cela peut venir de « localhost » qui n’est peut-être pas reconnu comme le nom de la machine. Essaye de remplacer « localhost » par le nom renvoyé par hostname.
          • Partager sur Facebook
          • Partager sur Twitter
            25 février 2010 à 14:30:12

            Merci t'es un chef! :D

            En fait le problème n'est pas a cause du localhost je crois (je n'ai pas essayé de le remettre), mais parce que j'ai ajouté la ligne me permettant d'arrêter le serveur dans la section # User privilege specification qui se trouve au milieu du fichier.

            Je suis allé faire un tour dans la documentation de sudoers et j'ai lu que par défaut l'authentification était obligatoire a part avec le paramètre NOPASSWD.
            Et comme les paramètres du fichiers se lisent dans l'ordre, la dernière instruction lue écrase les précédentes.

            J'ai donc ajouté ma ligne à la fin du fichier et ça fonctionne!

            Merci beaucoup! :D

            Maintenant prochaine étape -> Wake on Lan et Wake on Wan! :)
            • Partager sur Facebook
            • Partager sur Twitter
              28 juin 2011 à 12:59:17

              Est-il possible d'autoriser d'autres commandes sans mot de passe.
              Par exemple en parlant du Wake on Lan il faudrait que je puisse lancer la commande à distance en ssh.
              "sudo etherwake etc...".

              Comment faire ?
              Car si j'ai bien compris dans ton cas =>_login localhost = NOPASSWD: /sbin/halt
              Cela ne fonctionne que pour arrêter la machine.

              Merci pour vos réponses
              • Partager sur Facebook
              • Partager sur Twitter

              [Script shell] Arrêter un serveur depuis un poste client

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown