1 votes

Comment emballer les commandes linux dangereuses avec une invite de vérification ?

Question : Comment puis-je envelopper les commandes linux pour demander une vérification avant d'exécuter la commande ?

Exemple :

$> shutdown -r now
Please verify the host you are shutting down by typing the hostname: myhost.example.com
Verification passed, shutting down now

Justification : Nous avons récemment eu un incident où un ingénieur de production se trouvait sur la mauvaise machine lorsqu'il a exécuté une commande destructive. La direction nous a demandé de mettre en place des contrôles de vérification pour certaines commandes destructives.

Défi : Nous devons envelopper une variété de types de commandes, certaines peuvent être systemctl commandes, scripts, ou binaires en cours d'exécution.

1voto

spuder Points 9635
  1. Déplacez le binaire à un endroit qui est no dans le $PATH
  2. Créer un bash script pour faire la vérification que vous voulez et le stocker à un emplacement à l'intérieur de votre chemin.

    mv /sbin/shutdown /opt/shutdown touch /sbin/shutdown chmod +x /sbin/shutdown

Puis remplacez-le par un bash script qui fait ce que vous voulez.

#!/bin/bash
echo "do whatever" 
/opt/shutdown $@

La ligne /opt/shutdown $@ transmettra tous les arguments de la ligne de commande à la fonction réel binaire.

1voto

black666 Points 101

Vous pouvez utiliser des alias créés par votre système de gestion de la configuration préféré pour cibler les systèmes critiques.

you_sure() {
  if [[ $- =~ i ]] # only on interactive shells
  then
    read -p 'OPERATION ON LIVE PRODUCTION ENVIRONMENT! ARE YOU SURE? [N/y]: ' -n 1 -r
    echo
  fi

  if [[ ! $- =~ i || $REPLY =~ ^[Yy]$ ]]
  then
    "$CMD" "$@"
  fi
}

alias shutdown='CMD=shutdown you_sure'

Cela permet également un contournement simple en faisant précéder la commande d'une barre oblique : $ \shutdown -r now

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X