1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
| #!/bin/sh
#vérifie que tomcat est arrété
ServiceTomcat='tomcat7'
if ps ax | grep -v grep | grep $ServiceTomcat > /dev/null
then
echo "$ServiceTomcat est en cours d'éxecution.\nVeuillez arreter tomcat via la commande en tant que root:\nservice tomcat7 stop"
exit
else
echo "$ServiceTomcat n'est pas chargé, c'est tres bien."
fi
#vérifie qu'apache2 est arrété
ServiceApache='apache2'
if ps ax | grep -v grep | grep $ServiceApache > /dev/null
then
echo "$ServiceApache est en cours d'éxecution.\nVeuillez arreter tomcat via la commande en tant que root:\nservice tomcat7 stop"
exit
else
echo "$ServiceApache n'est pas chargé, c'est tres bien."
fi
#Demande de toutes les informaions dont nous avons besoin
echo -n "Entrez le nom d'utilisateur PostgreSQL [postgres] : "
read UserPG
#Vérification qu'un utilisateur à bien été renseigné pour la connection à PostgreSQL.
UserPG=${UserPG:-postgres}
echo "Bienvenu $UserPG\n"
echo -n "Mot de passe : "
read PGpassword
#Vérification qu'un mot de passe à bien été renseigné pour la connection à PostgreSQL.
if [ -z "$PGpassword" ]; then
echo "Pas de mot de passe PostgreSQL définit\n"
exit 1 #exit shell script
fi
echo "Votre mot de passe à bien été pris en compte\n"
echo -n "Ip ou non du serveur PostgreSQL [localhost] ?"
read PGhostname
#Définit une IP ou un nom machine pour la connection à PostgreSQL, par défaut, localhost.
PGhostname=${PGhostname:-localhost}
echo "L'hôte ou l'IP PostgreSQL est $PGhostname\n"
echo -n "Port du serveur PostgreSQL [5432] ? "
read port_num
#Définit un port pour la connection à PostgreSQL, Par défaut, 5432.
port_num=${port_num:-5432}
echo "Le port par défaut ($port_num) sera utilisé\n"
#Nom de la base de donnée à restaurer
echo -n "Nom de la base de donnée pour l'Appli?"
read appli_db
#Vérification qu'une base de donnée à bien été renseignée pour travailler dessus.
if [ -z "$appli_db" ]; then
echo "Pas de base de donnée PostgreSQL définit\n"
exit 1 #exit shell script
fi
echo "La base de donnée PostgreSQL est $appli_db\n"
#Nom du Schema à restaurer (en général, le nom du schema est identique au nom de la base de donnée)
echo -n "Nom du schema à restaurer [$appli_db]?"
read schema_db
schema_db=${schema_db:-$appli_db}
#Chemin absolu pou l'acces au dump à restaurer.
echo -n "Chemin vers le dump à restaurer [$(pwd)] ? "
read dump_location
dump_location=${dump_location:-$(pwd)}
echo "Le répertoir source de restauration est:\n $dump_location"
#Nom du fichier dump à restaurer.
echo -n "Nom du fichier dump à restaurer ? "
read file
if [ -z "$file" ]; then
echo "Pas de fichier renseigne\n"
exit 1 #exit shell script
fi
dump_location="$dump_location/$file"
echo "Le chemin absolut du fichier de restauration est:\n $dump_location"
DebutTraitement=$(date +%s)
#Création du fichier permettant de s'identifier au serveur PostgreSQL.
touch $HOME/.pgpass
#Attribution des droits sur le fichier, pas d'autre choix que 0600, si non, ca ne fonctionne pas.
chmod 0600 $HOME/.pgpass
#Remplissage du fichier avec les bons parametres
echo "$PGhostname:$port_num:$appli_db:$UserPG:$PGpassword" > $HOME/.pgpass
#
psql -h $PGhostname -p $port_num $appli_db -U $UserPG << EOF
DROP SCHEMA IF EXISTS $schema_db CASCADE;
EOF
# Attention, EOF ne doit pas avaoir d'espace avant. si non, cela génèrera une erreur.
sleep 3
cat $dump_location | psql -h $PGhostname -p $port_num $appli_db -U $UserPG
psql -h $PGhostname -p $port_num $appli_db -U $UserPG << EOF
EOF
#Efface le mot de passe dans la variable et le fichier.
PGpassword=""
rm $HOME/.pgpass
echo "Ne pas oublier de redémarer tomcat"
echo "Ne pas oublier de redémarer Apache"
FinTraitement=$(date +%s)
TempsTraitement=$(($FinTraitement-$DebutTraitement))
echo "la tache s'est terminé à :\n$(date '+%H:%M:%S')"
heure=$(($TempsTraitement/3600))
if [ "$heure" -le 1 ]; then
h="heure"
else
h="heures"
fi
#echo $heure
minute=$((($TempsTraitement-$heure*3600)/60))
if [ "$minute" -le 1 ]; then
m="minute"
else
m="minutes"
fi
#echo $minute
seconde=$(($TempsTraitement-($heure*3600)-($minute*60)))
if [ "$seconde" -le 1 ]; then
s="seconde"
else
s="secondes"
fi
#echo $seconde
echo "la tache s'est éxécuté en $heure $h $minute $m et $seconde $s" |
Partager