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