[Shell] Boucle si mot de passe su incorrect

Résolu
Koozag Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   -  
Koozag Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
je suis en train d'effectuer un script pour une automatisation de la mise à jour de base de signatures antivirus.

Le but est que les utilisateurs n'effectue que le minimum d'actions. A un moment de mon script je dois effectuer une copie des fichiers, mais cela n'est possible qu'en tant que super utilisateur.

echo "Cette action ne peut se faire uniquement en tant que superutilisateur"
echo "Entrer le mot de passe"
# passage en mode superutilisateur et demande du mot de passe pour la copie des fichiers
su -c "cp $HOME/clamav/main.cvd /var/lib/clamav;cp $HOME/clamav/daily.cvd /var/lib/clamav"
echo "Copies correctement effectuées"


J'aimerais placer une boucle après le su
en gros cela donnerais :
su
BOUCLE
demande mdp
si ok on exécute la copie
sinon on remonte et on redemande le motdepasse
FIN BOUCLE

Voila je débute en SHELL et j'avoue que sur les documentations présentes sur internet, je n'ai rien trouvé d'intéressant.

Merci d'avance
A voir également:

4 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

#! /bin/sh

#set -xv

while :
do
su -c '/sbin/fdisk -l' && break || continue
done

;-))
1
Koozag Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   50
 
C'est parfait, tout fonctionne nickel !!
Merci beaucoup pour la réponse (parfaite) et la rapidité !

:)
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
De rien ;-))

Par contre si la copie échoue, on ne sort pas de la boucle, le mot de passe sera redemandé et la commande exécutée à nouveau ;-(
0
Koozag Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   50
 
D'accord, mais c'est une copie de base qui n'échouera surement jamais ;)
Encore merci, c'est parfait =)
0