Merci beaucoup Mr Freeze !
A mon grand désespoir, je n’avais pas encore vu ton message et je viens d’implémenter la gestion des erreurs sur l’ensemble de mon script…
Voici néanmoins le fruit de mon travail :
[code]## anticon IP
function valid_ip()
{
local ip=$1
local stat=1
if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
OIFS=$IFS
IFS='.'
ip=($ip)
IFS=$OIFS
[[ ${ip[0]} -le 255 && ${ip[1]} -le 255 \
&& ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
stat=$?
fi
return $stat
}
read LaVariable
valid_ip $LaVariable
if [[ $? -eq 0 ]]; then echo good; else “Tapé avec les pieds ?” ; sleep 2 ; clear screen ; echo -n “Dernière chance :” ; read LaVariable ; fi
anticon network
function valid_netw() {
local ip=$1
local stat=1
if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}$ ]]; then
OIFS=$IFS
IFS='.'
ip=($ip)
IFS=$OIFS
[[ ${ip[0]} -le 255 && ${ip[1]} -le 255 \
&& ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
stat=$?
fi
return $stat
}
read LaVariable
valid_netw $LaVariable
if [[ $? -eq 0 ]]; then echo good; else “Tapé avec les pieds ?” ; sleep 2 ; clear screen ; echo -n “Dernière chance :” ; read LaVariable ; fi
anticon @IP
function testip () {
echo "tapez l’adresse IP :"
read IP
}
testip
function check_ip () {
if [[ “$IP” =~ ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ ]] ; then echo “Vous avez saisi une @IP plausible !” ; else clear screen ; echo "Retentez votre saisie : " ; testip ; check_ip $IP ; fi
}
check_ip $IP
anticon @IP network
function testip_netw () {
echo "tapez l’adresse de votre réseau :"
read Netw
}
testip_netw
function check_ip () {
if [[ “$Netw” =~ ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])((/[1-2]{1}[0-9]{1})|(/3[0-2]{1})|(/[0-9])){1,2}$ ]] ; then echo “Vous avez saisi une @IP réseau plausible !” ; else clear screen ; echo "Retentez votre saisie : " ; testip_netw ; check_ip $Netw ; fi
}
check_ip $Netw
anticon Numéro de Port
function testNum () {
echo "
#########################################################################
Tapez ici le numéro du port que vous souhaitez ouvrir :
#########################################################################"
read Num
}
testNum
function check_Num () {
if [[ “$Num” =~ ^([0-9]){1,4}$ ]] || [[ “$Num” =~ ^[1,2,3,4,5][0-9]{1,4}$ ]] || [[ “$Num” =~ ^6([0-9]){4}$ ]] ; then echo “Vous avez saisi numéro de port plausible !” ; else clear screen ; echo "Retentez votre saisie : " ; testNum ; check_Num $Num ; fi
}
check_Num $Num
anticon @mail
function mail_addr () {
echo "tapez l’adresse mail :"
read Email
}
mail_addr
function check_mail () {
if [[ “$Email” =~ ^[A-Za-z0-9._%±]+@[A-Za-z0-9.-]+.[A-Za-z]{2,4}$ ]] ; then echo “Bravo vous avez tapé une adresse email avec succès !” ; else clear screen ; echo "Retentez votre saisie : " ; mail_addr ; check_mail $Email ; fi
}
check_mail $Email
anticon serial bind
function serial_saisie () {
echo "
###########################################################################
Tapez ici le numéro de série au format : AAAAMMJJSS où SS est le sérial.
###########################################################################"
read serial
}
serial_saisie
function check_serial () {
if [[ “$serial” =~ [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$ ]] ; then echo “Bravo vous avez tapé un numéro de série correctement interprétable par Bind9 !” ; else clear screen ; echo "Retentez votre saisie : " ; serial_saisie ; check_serial $serial; fi
}
check_serial $serial
anticon @prefixe
function testprefixe () {
echo "
tapez ici le préfixe qui définit le masque de votre sous
réseau (exemple : /24)"
read prefixe
}
testprefixe
function check_prefixe () {
if [[ “$prefixe” =~ ((/[1-2]{1}[0-9]{1})|(/3[0-2]{1})|(/[0-9]))$ ]] && [[ “$prefixe” != [???]$ ]] ; then echo “Vous avez saisi un prefixe plausible !” ; else clear screen ; echo "Retentez votre saisie : " ; testprefixe ; check_prefixe $prefixe ; fi
}
check_prefixe $prefixe
anticon domaine
function domaine_addr () {
echo "tapez votre nom de domaine :"
read mondomaine
}
domaine_addr
function check_domaine () {
if [[ “$mondomaine” =~ [A-Za-z0-9.-]+.[A-Za-z]{2,4}$ ]] ; then echo “Bravo vous avez tapé un nom de domaine avec succès !” ; else clear screen ; echo "Retentez votre saisie : " ; domaine_addr ; check_domaine $mondomaine ; fi
}
check_domaine $mondomaine
anticon octet
function testoct4 () {
echo "Tapez ici le 2ème octet de l’@IPV4 du serveur :"
read oct4
}
testoct4
function check_oct4 () {
if [[ “$oct4” =~ ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$ ]] ; then echo “Vous avez saisi un octet plausible !” ; else clear screen ; echo "Retentez votre saisie : " ; testoct4 ; check_oct4 $oct4 ; fi
}
check_oct4 $oct4
anticon myhostname
function myhostname_addr () {
echo "Tapez ici le nom de machine de votre serveur"
read myhostname
}
myhostname_addr
function check_myhostname () {
if [[ “$myhostname” =~ ^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-][a-zA-Z0-9]).)([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9-]*[A-Za-z0-9])$ ]] ; then echo “Bravo vous avez tapé un nom de machine avec succès !” ; else clear screen ; echo "Retentez votre saisie : " ; myhostname_addr ; check_myhostname $myhostname ; fi
}
check_myhostname $myhostname
anticon FQDN
function CLOUD_FQDN_addr () {
echo "
$name tapez le nom FQDN de la machine qui héberge le serveur de cloud :"
read CLOUD_FQDN
}
CLOUD_FQDN_addr
function check_CLOUD_FQDN () {
if [[ “$CLOUD_FQDN” =~ ^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-][a-zA-Z0-9]).)([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9-]*[A-Za-z0-9])+[A-Za-z0-9.-]+.[A-Za-z]{2,4}$ ]] ; then echo “Bravo vous avez tapé un nom de machine avec succès !” ; else clear screen ; echo "Retentez votre saisie : " ; CLOUD_FQDN_addr ; check_CLOUD_FQDN $CLOUD_FQDN ; fi
}
check_CLOUD_FQDN $CLOUD_FQDN
anticon domaine LDIF
function domaine_addr () {
echo "Tapez le nom votre domaine au format LDIF (ex : dc=google,dc=com): "
read Domaine_LDIF
}
domaine_addr
function check_domaine () {
if [[ “$Domaine_LDIF” =~ ^dc=[A-Za-z0-9.-]+,dc=[A-Za-z]{2,4}$ ]] || [[ “$Domaine_LDIF” =~ ^dc=[A-Za-z0-9.-]+,dc=[A-Za-z0-9.-]+,dc=[A-Za-z]{2,4}$ ]] || [[ “$Domaine_LDIF” =~ ^dc=[A-Za-z0-9.-]+,dc=[A-Za-z0-9.-]+,dc=[A-Za-z0-9.-]+,dc=[A-Za-z]{2,4}$ ]] ; then echo “Bravo vous avez tapé un nom de domaine au format LDIF !” ; else clear screen ; echo "Retentez votre saisie : " ; domaine_addr ; check_domaine $Domaine_LDIF ; fi
}
check_domaine $Domaine_LDIF
anticon sous-domaine
function check_sous_domaine () {
echo -n "Tapez ici le premier sous domaine de l’organisation (ex pour le domaine grp5.info-msj.net taper : grp5) : "
read sous_domaine
}
check_sous_domaine
function check_domaine () {
if [[ “$sous_domaine” =~ [A-Za-z0-9.-]$ ]] ; then echo “Bravo vous avez tapé un nom de sous domaine correct !” ; else clear screen ; echo "Retentez votre saisie : " ; check_sous_domaine ; check_domaine $sous_domaine ; fi
}
check_domaine $sous_domaine
anticon mailsize
function testmailsize () {
echo "
###########################################################################
Tapez la taille max des fichiers joints uploades sur le serveur en Mo
(saisissez une valeure comprise entre 01 et 15. La réponse doit
impérativement comprendre 2 caractères) :
###########################################################################"
read mailsize
}
testmailsize
function check_mailsize () {
if [[ “$mailsize” =~ 1[0-5]$ ]] || [[ “$mailsize” =~ 0[0-9]$ ]] ; then echo “Vous avez saisi une taille max des fichiers joints plausible !” ; else clear screen ; echo "Retentez votre saisie : " ; testmailsize ; check_mailsize $mailsize ; fi
}
check_mailsize $mailsize
anticon passwd
function pass_confirm () {
echo "
###########################################################################
Tapez le mot de passe de l’utilisateur $contact :
###########################################################################"
read pass_user
echo "
###########################################################################
Confirmez le mot de passe de l’utilisateur $contact :
###########################################################################"
read pass_user2
}
pass_confirm
while [ “${pass_user}” != “${pass_user2}” ]
do
echo “Les mots de passe ne correspondent pas !” ; sleep 2 ; clear screen
pass_confirm
done[/code]
Les regex proposés ici sont pour la plupart issus du web mais certains sont de ma composition, je vous demande donc d’être indulgent avec moi, c’est ma première approche…
Je re-publierais une version de mon script une fois que je l’aurais suffisamment débugué (pas tant pour la pureté du code mais plus pour avoir un retour sur l’ergonomie du programme) !
A + et MERCI A TOUS 