first commit
This commit is contained in:
		
						commit
						ea0e8b05c2
					
				|  | @ -0,0 +1,149 @@ | ||||||
|  | #!/bin/bash | ||||||
|  | 
 | ||||||
|  | HOME_DIR=$HOME"/.KeepassXC" | ||||||
|  | NOM_BASE="Snorky" | ||||||
|  | EXT_BASE=".kdbx" | ||||||
|  | TMP_DIR="tmp" | ||||||
|  | NULL="/dev/null" | ||||||
|  | DATE=$(date +"%d-%m-%y_%H-%M-%S") | ||||||
|  | ROTATE=3 | ||||||
|  | CHECKSUM_FICHIER="checksum.txk" | ||||||
|  | 
 | ||||||
|  | # Fonction gestion des erreurs | ||||||
|  | # | ||||||
|  | function die () { | ||||||
|  | 
 | ||||||
|  |     case $1 in  | ||||||
|  |         1) | ||||||
|  |             echo -e "Le repertoire $HOME_DIR n'existe pas." | ||||||
|  |             echo -e "Modifier la variable HOME_DIR." | ||||||
|  |             exit 1 | ||||||
|  |             ;; | ||||||
|  |         2) | ||||||
|  |             echo -e "Le process Keepassxc est en cours d'execution." | ||||||
|  |             echo -e "Veuillez le fermer et relancer le script." | ||||||
|  |             echo -e "ex: kill -9 $2" | ||||||
|  |             exit 2 | ||||||
|  |             ;; | ||||||
|  |         3) | ||||||
|  |             echo -e "Erreur lors de la copie." | ||||||
|  |             exit 3 | ||||||
|  |             ;; | ||||||
|  |     esac | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | # Fonction de verification si keepass tourne. | ||||||
|  | # | ||||||
|  | function check_keepassxc () { | ||||||
|  |     for process in $(ls -dv /proc/[0-9]* 2> $NULL); do  | ||||||
|  |         if grep -qiE "keepassxc$" $process/status 2> $NULL; then  | ||||||
|  |             K_PID=$(echo $process | cut -d "/" -f3) | ||||||
|  |             die 2 $K_PID | ||||||
|  |             break  | ||||||
|  |         fi  | ||||||
|  |     done | ||||||
|  |     echo "Aucun process Keepass en cours d'execution." | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | # Fonction de verification du repertoire $HOME_DIR/tmp | ||||||
|  | # | ||||||
|  | function check_tmp () { | ||||||
|  |      | ||||||
|  |     if [ ! -d $TMP_DIR ]; then | ||||||
|  |         echo -e "Le repertoire tmp n'existe pas." | ||||||
|  |         echo -e "Creation du repertoire." | ||||||
|  |         mkdir $TMP_DIR | ||||||
|  |     else | ||||||
|  |         echo "Le repertoire tmp existe deja." | ||||||
|  |     fi | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | # Fonction de rotation des bases a sauvegarder dans le git. | ||||||
|  | # Gestion du git add/remove dans un deuxieme temps. | ||||||
|  | 
 | ||||||
|  | function base_rotation () { | ||||||
|  | 
 | ||||||
|  |     cd $HOME_DIR/$TMP_DIR | ||||||
|  |     for nb in $(seq 0 $(( $ROTATE - 1))); do | ||||||
|  |         if [ $(( $ROTATE - $nb )) -ne $ROTATE ]; then | ||||||
|  |             if [ -f "$(( $ROTATE - $nb ))_$NOM_BASE"* ]; then | ||||||
|  |                 NOM_TMP=$(ls "$(( $ROTATE - $nb ))_$NOM_BASE"* | cut -d "_" -f2-) | ||||||
|  |                 git mv $(( $ROTATE - $nb ))_$NOM_BASE* "$(( $ROTATE - $nb + 1 ))_$NOM_TMP" | ||||||
|  |             fi | ||||||
|  |         else | ||||||
|  |             NOM_TMP=$(ls "$(( $ROTATE - $nb ))_$NOM_BASE"* | cut -d "_" -f2-) | ||||||
|  |             git rm $(( $ROTATE - $nb ))_$NOM_BASE* | ||||||
|  |             git commit -m "Remove de $NOM_TMP" | ||||||
|  |             git push | ||||||
|  |         fi | ||||||
|  | 
 | ||||||
|  |     done | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | # Fonction de copie de la base avant de push sur le git | ||||||
|  | # | ||||||
|  | function copie_base () { | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     cd $HOME_DIR | ||||||
|  |     cp $NOM_BASE$EXT_BASE $TMP_DIR/"1_$NOM_BASE-$DATE$EXT_BASE" | ||||||
|  |     git add tmp/1_* | ||||||
|  |     echo "Verification des HASH." | ||||||
|  |     HASH_BASE=$(md5sum $NOM_BASE$EXT_BASE | cut -d " " -f1) | ||||||
|  |     HASH_COPY=$(md5sum $TMP_DIR/"1_"* | cut -d " " -f1) | ||||||
|  |      | ||||||
|  |     echo -e "Hash de la base originale: \n"$HASH_BASE | ||||||
|  |     echo -e "Hash de la base copiee: \n"$HASH_COPY | ||||||
|  | 
 | ||||||
|  |     #if [ ${HASH_BASE} == 00000000000 ]; then | ||||||
|  |     if [ ${HASH_BASE} == ${HASH_COPY} ]; then | ||||||
|  |         echo -e "Les bases sont identiques." | ||||||
|  |     else | ||||||
|  |         die 3 | ||||||
|  |     fi | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | # Fonction de generation du fichier des checksums et de l'upload  | ||||||
|  | # sur gitea | ||||||
|  | function git_upload () { | ||||||
|  |     cd $TMP_DIR | ||||||
|  |     echo > $CHECKSUM_FICHIER | ||||||
|  |     for nb in $(seq 1 $ROTATE); do | ||||||
|  |         md5sum ${nb}_* >> $CHECKSUM_FICHIER | ||||||
|  |     done | ||||||
|  |     md5sum $CHECKSUM_FICHIER >> $CHECKSUM_FICHIER | ||||||
|  |     git add * | ||||||
|  |     git commit -m "Backup base $DATE" | ||||||
|  |     git push | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function main () { | ||||||
|  | 
 | ||||||
|  |     # Deplacement dans le home | ||||||
|  |     cd $HOME_DIR 2>$NULL || die 1 | ||||||
|  | 
 | ||||||
|  |     # Verification que le process Keepassxc ne tourne pas | ||||||
|  |     # afin de ne pas corrompre la base lors de la copie | ||||||
|  |     # à chaud. | ||||||
|  |     check_keepassxc | ||||||
|  | 
 | ||||||
|  |     # Verification du répertoire tmp | ||||||
|  |     check_tmp | ||||||
|  | 
 | ||||||
|  |     # Rotation des bases | ||||||
|  |     base_rotation | ||||||
|  |     # Copie de la base et verification md5 | ||||||
|  |     copie_base | ||||||
|  | 
 | ||||||
|  |     # upload de la base sur gitea | ||||||
|  |     git_upload | ||||||
|  |     echo | ||||||
|  |     exit 0 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | main | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Snorky
						Snorky