# [TIP] Ne pas éteindre la mauvaise machine

## scout

Voilà un tip à deux francs ... mais c'est quand même un tip.

La plupart d'entre vous savent déja qu'avec sudo on peux faire un "halt" ou un "reboot" en utilisateur normal.

Alors, chez moi avant le tip:

/etc/sudoers

```
Cmnd_Alias      SHUTDOWN = /sbin/shutdown

geoffrey        ALL = (root) NOPASSWD: SHUTDOWN
```

et dans mon .zshrc (même syntaxe pour le .bashrc)

```
alias halt="sudo /sbin/shutdown -h now"

alias reboot="sudo /sbin/shutdown -r now"
```

ce qui me permet de taper "halt" pour éteindre l'ordinateur dans une console normale.

Le problème est le suivant: vous êtes fatigué, vous décidez de faire halt dans la première console venue pour éteindre l'ordinateur. Or vous génrez plein d'ordinateurs, vous vous connectez en ssh partout et là boulette ! vous n'avez pas fait attention, avez tapé halt dans une mauvaise console et vous avez éteint cet ordinateur qui est à 300Km de chez vous (car oui, vous avez mis vos sudoers et alias partout, c'est trop pratique). Là normalement vous vous arrachez les cheveux ...

Solution:

remplacer les deux alias par:

```
function halt() {

    if [[ -z `ps -p $PPID | grep ssh` ]]; then

        sudo /sbin/shutdown -h now

    else

        echo "Pas de ca directement en ssh !"

    fi

}

function reboot() {

    if [[ -z `ps -p $PPID | grep ssh` ]]; then

        sudo /sbin/shutdown -r now

    else

        echo "Pas de ca directement en ssh !"

    fi

}
```

en effet le test "[[ -z `ps -p $PPID | grep ssh` ]]" permet de savoir si le shell est issu directement d'un ssh ou pas ...

Vous remarquerez qu'avec ce principe on peux faire des personalisations dans sont .zshrc/.bashrc entre les consoles aterm, les logins ssh, les login "login", etc ...

----------

## Enlight

Ca a l'air sympa, mais il me semblait que sudo pouvait autoriser certaines commandes pour un utilisateur en faisant la distinction est/n'est pas sur le localhost, et même par ip?  En même temps ça fait un moment que j'ai plus touché à la conf de sudo donc j'peux me tromper.

----------

## sireyessire

mouais, mais je suis pas convaincu, comment tu fais pour halter ou rebooter ta machine sur laquelle tu t'es connecté en ssh?

il faudrait qu'il te demande une confirmation dans le cas où il détecte un shell issu d'un ssh, genre un 

```
echo "Are you really sure you want to shutdown this computer "$HOSTNAME" ? (y/n)"
```

puis un readline qui lit ce que tu réponds.

----------

## scout

 *sireyessire wrote:*   

> mouais, mais je suis pas convaincu, comment tu fais pour halter ou rebooter ta machine sur laquelle tu t'es connecté en ssh?

 

Tu tapes la commande explicitement, ou tu te loggues en root  :Mr. Green: 

 *Enlight wrote:*   

> Ca a l'air sympa, mais il me semblait que sudo pouvait autoriser certaines commandes pour un utilisateur en faisant la distinction est/n'est pas sur le localhost, et même par ip?  En même temps ça fait un moment que j'ai plus touché à la conf de sudo donc j'peux me tromper.

 

Oui c'est vrai, c'est pour avoir la même conf sudo sur tout un parc d'ordinateurs ... je vais regarder la chose et répondre aussi à la requête de sireyessire

----------

## sireyessire

 *scout wrote:*   

> 
> 
> Oui c'est vrai, c'est pour avoir la même conf sudo sur tout un parc d'ordinateurs ... je vais regarder la chose et répondre aussi à la requête de sireyessire

 

merchi, mais sinon la meilleure solution c'est d'avoir les yeux en face des trous  :Very Happy: 

----------

## anigel

Excellent, ce tip !

Comme à tout admin, ça m'est arrivé une fois, et heuresement il ne s'agissait "que" du serveur dns / dhcp / mail... Situé un étage plus bas....

----------

## zdra

pratique en effet, ça m'est arrivé de rebooter par erreur une machine pendant le weekend... le lundi jl'ai retrouvé bloquée sur grub qui avait pas de timeout  :Embarassed: 

----------

