nouvelle version du gestionnaire de mots de passes chiffrs sur vert, avec

de la couleur et tout plein d'autres trucs
j'ai mis un machin pour faire la compltion
ces scripts marchent bien si vous avec des cls ssh avec vert, dans le cas
contraire j'ose pas tester... il doit demander le mot de passe dans tous les
sens.
Pour info on peut utiliser les commandes suivantes :
  cranspasswords : identique au prcedent
  cranspasswords --remove mailman : supprime le mot de passe mailman sur vert
  cranspasswords --edit mailman : edite le fichier mailman
  cranspasswords --view mailman : affiche le fichier de mailman
  cranspasswords --re-encrypt-all : rechiffre tous les mots de passe
                                    (changements de nounou)
  cranspasswords --list : refile la liste des fichiers chiffrs
  cranspasswords mailman : identique   cranspasswords --view mailman

Les options --remove --edit --view peuvent tre donnes sans nom de fichier,
dans ce cas le script donne la liste

NB : j'ai mis tout ce dans le cvs pour que ce soit plus central que dans mon
home, et comme je savait pas ou le mettre, je l'ai mis dans un nouveau dossier

darcs-hash:20060313214622-4ec08-4ff30473667ef60489a8f2f082a442df3f23db58.gz
This commit is contained in:
chove 2006-03-13 22:46:22 +01:00
parent db226a96e1
commit 6604677322
2 changed files with 147 additions and 0 deletions

134
utils/cranspasswords Executable file
View file

@ -0,0 +1,134 @@
#! /bin/sh
##############################################################################
# variables générales
SRV=vert.adm.crans.org
REP=/root
TMP=`tempfile -m 600`
trap "rm -f ${TMP}" EXIT
##############################################################################
# parsage des arguments
if [[ -z "$1" ]] ; then
ACTION="--view"
CHOIX=""
elif echo $1 | grep -q '^--' ; then
ACTION=$1
CHOIX=$2
else
ACTION='--view'
CHOIX=$1
fi
##############################################################################
# fonctions utiles
function liste () {
# donne la liste des mot de passe
echo -e "\033[1;34mListe des mot de passe disponibles :\033[1;0m" >&2
ssh ${SRV} "ls ${REP} | grep -e '.asc$' | sed 's/\.asc$//g' | sed 's/^/ /g'" 2> /dev/null
}
function choix () {
# choix du fichier
if [[ -z "$CHOIX" ]] ; then
liste
echo
echo -e -n "\033[1;34mChoix : \033[1;0m"
read CHOIX
else
echo -e "\033[1;34mChoix :\033[1;0m $CHOIX"
fi
echo
}
function dechiffre () {
# récupère le mot de passe $CHOIX, le déchiffre et le colle dans $TMP
# ${TMP} sera vide si les pass n'existe pas
echo -e "\033[1;34mConnection à ${SRV}\033[1;0m"
ssh ${SRV} -t "sudo -p 'Mot de passe sudo : ' echo -n" 2> /dev/null
echo
echo -e "\033[1;34mRécupération du fichier et déchifrage\033[1;0m"
ssh ${SRV} "sudo cat ${REP}/$CHOIX.asc 2> /dev/null" | gpg --decrypt 2> /dev/null > ${TMP}
echo
}
function chiffre () {
# chiffre les fichier $TMP et les colle dans le fichier $CHOIX
echo -e "\033[1;34mChiffrage et envoi sur ${SRV}\033[1;0m"
if [[ ! -s ${TMP} ]] ; then
echo -e "\033[1;31mFichier vide, bandon...\033[1;0m"
exit 1
fi
gpg --armor --encrypt --output - \
--recipient Stephane.Glondu@crans.org \
--recipient pauget@crans.org \
--recipient dubost@crans.org \
--recipient etienne.chove@crans.org \
--recipient xavier.pessoles@crans.org \
--recipient Vincent.Bernat@crans.org \
--recipient Nicolas.Stransky@crans.org \
--recipient mathieu.segaud@crans.org \
--recipient salles@crans.org \
${TMP} | ssh ${SRV} "sudo sh -c \"cat > ${REP}/${CHOIX}.asc\""
}
function edite () {
# édite le fichier temporaire
$EDITOR ${TMP}
}
function voir () {
# affiche le contenu du fichier temporaire
echo -e "\033[1;34mAffichage du fichier\033[1;0m"
less ${TMP}
}
function supprime () {
# supprime un fichier
echo -e "\033[1;34mSuppression du fichier chiffré : \033[1;0m${CHOIX}"
CONFIRM="oui je suis sur"
echo -n "Tappez \"$CONFIRM\" :"
read CONFIRM2
echo
if [[ "${CONFIRM}" == "${CONFIRM2}" ]] ; then
echo -e "\033[1;34mConnection à ${SRV}\033[1;0m"
ssh ${SRV} -t "sudo -p 'Mot de passe sudo : ' echo -n" 2> /dev/null
echo
echo -e "\033[1;34mSuppression du fichier\033[1;0m"
ssh ${SRV} "sudo rm -f ${REP}/$CHOIX.asc 2> /dev/null"
echo -e "\033[1;32mFichié supprimé...\033[1;0m"
else
echo -e "\033[1;31mAbandon...\033[1;0m"
fi
}
##############################################################################
if [[ "$ACTION" == "--re-encrypt-all" ]] ; then
for CHOIX in `liste 2> /dev/null` ; do
echo -e "\033[1;33mTraitement de : \033[1;0m${CHOIX}"
echo
dechiffre
chiffre
echo
done
elif [[ "$ACTION" == "--edit" ]] ; then
choix
dechiffre
edite
chiffre
elif [[ "$ACTION" == "--remove" ]] ; then
choix
supprime
elif [[ "$ACTION" == "--view" ]] ; then
choix
dechiffre
voir
elif [[ "$ACTION" == "--list" ]] ; then
liste 2> /dev/null | cut -b 5-
else
echo "Usage : cranspasswords [--re-encrypt-all|--edit|--remove|--view|--list] [FICHIER]"
fi