Script bash et test de fichier

Bonjour, j’apprends à coder et j’essaye de créer un script bash pour automatiser mes sauvegardes avec rdiff-backup (je sais il y a plein de script existant déjà performant, mais c’est une manière d’apprendre et mon périphérique de sauvegarde est chiffré ce qui modifie un peu tout…

voici mon début de script :

[code]#!/bin/sh

if [ -e $/dev/disk/by-uuid/ba9e76b3-2f65-4f7f-aa69-285223dbced6 ]
then
# ouverture du périphérique chiffré
cryptsetup luksOpen /dev/disk/by-uuid/ba9e76b3-2f65-4f7f-aa69-285223dbced6 R-diff
# cryptsetup demande à ce moment la passphrase de décryptage, comment la saisir ds le script ?

if [ -e $/dev/mapper/R-diff ]
then
    # montage du disque externe contenant la sauvegarde
    mount -t ext3 /dev/mapper/R-diff /media/r-diff/ 

    # faire une liste des sauvegarde présentes avant la nouvelle sauvegarde et en écrivant les erreurs
    nice -n 19 rdiff-backup -l /media/r-diff/backup >  /home/rdiff-backup/oldbackup.txt 2>&1

    # faire une nouvelle sauvegarde, sortie avec erreurs ds un nouveau fichier
    nice -n 19 rdiff-backup --exclude-globbing-filelist /home/rdiff-backup/exclude.txt --exclude-sockets /home/lavilotte-rolle/Musique /media/r-diff/backup >  /home/rdiff-backup/rdiffbackup.txt 2>&1 


    # effacer les sauvegardes vieilles de plus d'un mois, sortie avec erreurs completant le fichier existant
    nice -n 19 rdiff-backup --remove-older-than 1M --force /media/r-diff/backup >>  /home/rdiff-backup/rdiffbackup.txt 2>&1 
    # gérer l'effacement des vieilles sauvegardes en fonction de la place disponible sur le HDD ?

    # faire une liste des sauvegarde présentes après la nouvelle sauvegarde et en écrivant les erreurs
    nice -n 19 rdiff-backup -l /media/r-diff/backup >  /home/rdiff-backup/backup.txt 2>&1

    # démontage du volume de sauvegarde (sécurité)
    umount /media/r-diff

    # fermeture du volume chiffré
    cryptsetup luksClose R-diff

else
echo "Erreur : le périphérique de sauvegarde n'est pas branché"
fi

else
echo "Erreur : le périphérique de sauvegarde n’est pas branché"
fi[/code]

Ma condition suivante :

if [ -e $/dev/disk/by-uuid/ba9e76b3-2f65-4f7f-aa69-285223dbced6 ] then # ouverture du périphérique chiffré cryptsetup luksOpen /dev/disk/by-uuid/ba9e76b3-2f65-4f7f-aa69-285223dbced6 R-diff # cryptsetup demande à ce moment la passphrase de décryptage, comment la saisir ds le script ? else echo "Erreur : le périphérique de sauvegarde n'est pas branché" fi
Doit (si j’ai bien compris) me renseigner sur la présence du fichier /dev/disk/by-uuid/ba9e76b3-2f65-4f7f-aa69-285223dbced6, effectuer les commandes suivantes si il est présent et renvoyer le message d’erreur le cas échéant.
Or , premier problème il me renvoit toujours le message d’erreur même si le fichier en question est bien présent…

Une idée ? Erreur de syntaxe ?

D’autre part cryptsetup luksOpen me demande de taper ma passphrase dans la console où je lance le script, y a t il un moyen d’éviter celà (stocker la passphrase ds un fichier, ds le script ou autre) ?

Merci à vous !

Tu as un $ qui se balade dans ta condition est qui est en trop.

Pour l’automatisation, oui c’est possible, mais je ne me souviens plus du nom du logiciel pour le faire. Une minute pour que je cherche…

Voila ! Trouvé !
Donc ça utilise les pseudo terminaux et le logiciel au quel je pensais s’appelle PDIP. Tu pourras trouver toutes les informations que je connais sur le sujet là dedans :
unixgarden.com/index.php/pro … nteractifs

PS : Stocker ton mot de passe dans un fichier en clair ce n’est pas bien.

Merci,
le “$” était bien le problème, mais il était présent dans le tuto que j’ai suivi pour élaborer mon script (faisant référence à une variable que je n’ai point).

Je regarde PDIP de plus près et je vous tiens au courant…
Pour ce qui est de stocker mon mot de passe en clair, oui, mais mon système est lui même chiffré et donc le mot de passe ne sera accessible qu’une fois la machine allumée, et ds un terminal root, pour un disque qui contient au final une sauvegarde de la dite machine, je ne pense pas prendre trop de risque. À voir…

Merci à toi :smiley:

Finalement seulement une redirection était nécessaire :

Ma passphrase est ds input.txt, que seul root peut lire, je ne sais pas si il y a mieux comme solution mais ça marche très bien comme ça…
Merci à vous ! :smiley:

Ca me déçoit de la part de lucks, mais bon au moins tu as résolu ton problème. :slightly_smiling: