scripts/utils/cranspasswords
salles c79c7df905 On enlve la cl de regala
Et on corrige un bug lorsque l'on veut rechiffrer tous les mots de passes en
vitant d'utiliser le mme fichier temporaire tout le long.

darcs-hash:20060317121109-72cb0-44c59f29be616ad82482b883d8a2fab3aa933816.gz
2006-03-17 13:11:09 +01:00

147 lines
4 KiB
Bash
Executable file

#! /bin/sh
##############################################################################
# variables générales
SRV=vert.adm.crans.org
REP=/root
TMP=`tempfile -m 600`
trap "rm -f ${TMP} ${TMP}.asc" 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, abandon...\033[1;0m"
exit 1
fi
# 6D1DF0FA pauget@crans.org
# BD156CC4 dubost@crans.org
# 98E76332 etienne.chove@crans.org
# 4EF9E1D1 xavier.pessoles@crans.org
# F22A794E Vincent.Bernat@crans.org
# FBFA4781 Nicolas.Stransky@crans.org
# FCE03DAA Stephane.Glondu@crans.org
# 5933F2E5 salles@crans.org
# B7B4AEA6 Bobot@crans.org
gpg --armor --encrypt \
--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 Stephane.Glondu@crans.org \
--recipient salles@crans.org \
--recipient Bobot@crans.org \
${TMP}
[[ "$#" == "0" ]] && ssh ${SRV} "sudo sh -c \"cat > ${REP}/${CHOIX}.asc\"" < ${TMP}.asc || echo -e "\033[1;31mErreur, abandon...\033[1;0m"
}
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 certain."
echo -n "Tapez \"$CONFIRM\" : "
read CONFIRM2
echo
if [[ "${CONFIRM}" == "${CONFIRM2}" ]] ; then
echo -e "\033[1;34mConnexion à ${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;32mFichier 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
TMP=`tempfile -m 600`
echo -e "\033[1;33mTraitement de : \033[1;0m${CHOIX}"
echo
dechiffre
chiffre
rm -f ${TMP} ${TMP}.asc
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