scripts/utils/cranspasswords
chove 3f3180e568 clé de francois
darcs-hash:20060314224312-4ec08-b9dc75e16c8c2a2cf6d02ec2738c9646e5c61010.gz
2006-03-14 23:43:12 +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
# 2E13FCA8 mathieu.segaud@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 mathieu.segaud@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
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