mise à jour des scripts

This commit is contained in:
Emmanuel Viennet 2021-08-15 16:43:53 +02:00
parent e61f4e0fe6
commit 1b2813d7d2
6 changed files with 60 additions and 89 deletions

View File

@ -26,6 +26,7 @@
# #
############################################################################## ##############################################################################
# TODO à tester avec ScoDoc9, devrait fonctionner sans problème majeur ?
"""Anonymize une base de données ScoDoc """Anonymize une base de données ScoDoc
@ -56,13 +57,13 @@ anonymize_null = "NULL"
# aggregate_length = lambda column, _: 'length({})'.format(column) # aggregate_length = lambda column, _: 'length({})'.format(column)
# --- Champs à anonymiser (cette configuration pourrait être placé dans un fichier séparé # --- Champs à anonymiser (cette configuration pourrait être placé dans
# et le code serait alors générique pour tout base posgresql, aux données de connection # un fichier séparé et le code serait alors générique pour toute base
# près) # posgresql.
#
# On essaie de retirer les données personnelles des étudiants et des entreprises # On essaie de retirer les données personnelles des étudiants et des entreprises
# L'identité (login) des enseignants n'est pas modifiée # TODO: L'identité (login) des enseignants n'est pas modifiée
# (on ne sait rien d'autre sur eux dans cette base, et changer le login ets compliqué #
# car c'est la clé avec SCOUSERS)
# #
ANONYMIZED_FIELDS = { ANONYMIZED_FIELDS = {
"identite.nom": anonymize_name, "identite.nom": anonymize_name,

View File

@ -32,7 +32,10 @@ export POSTGRES_USER="$SCODOC_USER"
# Postgresql superuser: # Postgresql superuser:
export POSTGRES_SUPERUSER=postgres export POSTGRES_SUPERUSER=postgres
export SCODOC_USER_DB="SCO8USERS" export SCODOC_DB_PROD="SCODOC"
export SCODOC_DB_DEV="SCODOC_DEV"
export SCODOC_DB_TEST="SCODOC_TEST"
# psql command: if various versions installed, force the one we want: # psql command: if various versions installed, force the one we want:
if [ "${debian_version}" = "10" ] if [ "${debian_version}" = "10" ]

View File

@ -6,48 +6,41 @@
# Avec option: # Avec option:
# -a : sauve aussi les bases de données # -a : sauve aussi les bases de données
# #
set -euo pipefail
# Le répertoire de ce script:
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source "$SCRIPT_DIR"/config.sh || die "config.sh not found, exiting"
DEST_ADDRESS=emmanuel.viennet@gmail.com DEST_ADDRESS=emmanuel.viennet@gmail.com
TMP=/tmp/scodoc-$(date +%F-%s) TMP=/tmp/scodoc-$(date +%F-%s)
DEPTS_TO_SAVE="" SAVE_DB=0
SAVE_USERS=0
SEND_BY_MAIL=1 SEND_BY_MAIL=1
SCODOC_DIR="/opt/scodoc"
SCODOC_VAR_DIR="/opt/scodoc-data"
# ------------------------------------- # -------------------------------------
# Arguments # Arguments
# ------------------------------------- # -------------------------------------
function join_by { local IFS="$1"; shift; echo "$*"; } function join_by { local IFS="$1"; shift; echo "$*"; }
while getopts ":d:aunh" opt; do while getopts "anh" opt; do
case $opt in case "$opt" in
a) a)
# Liste des noms des departements, a partir des bases SQL SCO* SAVE_DB=1
DEPTS_TO_SAVE=$( (su postgres -c "psql -l") | grep SCO | grep -v SCOUSERS | awk '{ gsub("SCO", "", $1); print $1}' )
SAVE_USERS=1
;;
u)
SAVE_USERS=1
;; ;;
n) n)
SEND_BY_MAIL=0 SEND_BY_MAIL=0
;; ;;
d)
DEPTS_TO_SAVE=$( join_by ' ' "$DEPTS_TO_SAVE" "$OPTARG" )
;;
h) h)
echo "Diagnostic installation ScoDoc" echo "Diagnostic installation ScoDoc"
echo "Rassemble informations sur le systeme et l'installation ScoDoc" echo "Rassemble informations sur le systeme et l'installation ScoDoc"
echo "Usage: $0 [-h] [-n] [-a] [-u] [-d dept]" echo "Usage: $0 [-h] [-n] [-a] [-u] [-d dept]"
echo " -h cette aide" echo " -h cette aide"
echo " -n pas d'envoi par mail" echo " -n pas d'envoi par mail"
echo " -a enregistre aussi toutes les bases de donnees" echo " -a enregistre la bases de donnees (prod)"
echo " -u enregistre la base utilisateurs" echo " -u enregistre la base utilisateurs"
echo " -d dept enregistre la base du departement dept"
exit 0 exit 0
;; ;;
\?) \?)
@ -75,7 +68,7 @@ fi
mkdir "$TMP" mkdir "$TMP"
# Files to copy: # Files to copy:
FILES="/etc/hosts /etc/debian_version /etc/apt /etc/apache2 $SCODOC_DIR/VERSION" FILES="/etc/hosts /etc/debian_version /etc/apt /etc/apache2 $SCODOC_DIR/VERSION $SCODOC_VAR_DIR/config"
echo "ScoDoc diagnostic: informations about your system will be " echo "ScoDoc diagnostic: informations about your system will be "
@ -115,10 +108,10 @@ ls -laR "$SCODOC_DIR" > "$TMP"/ls-laR
# Databases configurations # Databases configurations
# ------------------------------------- # -------------------------------------
(su postgres -c "psql -l") > "${TMP}/psql-l.out" (su postgres -c "psql -l") > "${TMP}/psql-l.out"
for dept in "${SCODOC_VAR_DIR}"/config/depts/*.cfg
for db in "$SCODOC_DB_PROD" "$SCODOC_DB_DEV"
do do
cnx=$(cat "$dept") (su postgres -c "echo '\dt' | psql $db") > "${TMP}/psql-$db).out"
(su postgres -c "echo '\dt' | psql -d $cnx") > "${TMP}/psql-$(basename ${dept%%.*}).out"
done done
@ -136,36 +129,24 @@ done
# ------------------------------------- # -------------------------------------
# Optionally save dept(s) database(s) # Optionally save database
# ------------------------------------- # -------------------------------------
DEPTS_TO_SAVE=$(echo "${DEPTS_TO_SAVE}" | tr ' ' '\n' | sort | uniq)
# Dump database of a dept (eg "RT") # Dump database
function dump_dept_db { function dump_db {
dept=$1
DB=$2
echo "Dumping database ${DB}..."
mkdir -p "${TMP}/depts/${dept}"
chmod -R a+wr "${TMP}/depts/"
(su postgres -c "pg_dump --create ${DB}") | gzip > "${TMP}/depts/${dept}/${DB}.dump.gz"
# may add archives ? (but probably too big)
} }
for dept in ${DEPTS_TO_SAVE} if [ "${SAVE_DB}" = "1" ]
do
dump_dept_db "${dept}" "SCO${dept}"
done
# -------------------------------------
# Optionally saveUSERS db
# -------------------------------------
if [ "${SAVE_USERS}" = "1" ]
then then
dump_dept_db "USERS" "SCOUSERS" for db in "$SCODOC_DB_PROD" "$SCODOC_DB_DEV"
do
echo "Dumping database ${db}..."
pg_dump --create "${db}") | gzip > "${TMP}/${db}.dump.gz"
# may add archives ? (no, probably too big)
done
fi fi
# ------------------------------------- # -------------------------------------
# Archive all stuff to /tmp # Archive all stuff to /tmp
# ------------------------------------- # -------------------------------------
@ -198,8 +179,8 @@ YYYYMMDD=$(date +%Y%m%d)
# CHANGE THESE # CHANGE THESE
TOEMAIL=$DEST_ADDRESS TOEMAIL=$DEST_ADDRESS
FREMAIL="scodoc-diagnostic@none.org"; FREMAIL="scodoc-diagnostic@none.org";
SUBJECT="ScoDoc diagnostic - $YYYYMMDD"; SUBJECT="ScoDoc 9 diagnostic - $YYYYMMDD";
MSGBODY="ScoDoc diagnostic sent by diagnostic.sh"; MSGBODY="ScoDoc 9 diagnostic sent by diagnostic.sh";
ATTACHMENT="$TMP.tgz" ATTACHMENT="$TMP.tgz"
MIMETYPE="application/gnutar" #if not sure, use http://www.webmaster-toolkit.com/mime-types.shtml MIMETYPE="application/gnutar" #if not sure, use http://www.webmaster-toolkit.com/mime-types.shtml

View File

@ -8,6 +8,8 @@
# Jun 2019, Oct 2019, Dec 2020, Jul 2021 # Jun 2019, Oct 2019, Dec 2020, Jul 2021
# #
set -euo pipefail
# Le répertoire de ce script: # Le répertoire de ce script:
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"

View File

@ -22,6 +22,8 @@
# 4- TODO migrer de Apache à nginx, scripts service systemd # 4- TODO migrer de Apache à nginx, scripts service systemd
# #
set -euo pipefail
# Le répertoire de ce script: # Le répertoire de ce script:
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
@ -115,13 +117,26 @@ echo "(les utilisateurs ScoDoc8 existants seront laissés inchangés)"
echo "-------------------------------------------------------------" echo "-------------------------------------------------------------"
echo echo
su -c (cd "$SCODOC_DIR" && flask import-scodoc7-users) su -c "(cd $SCODOC_DIR && flask import-scodoc7-users)" "$SCODOC_USER"
# ----- Migration bases départements # ----- Migration bases départements
# les départements ScoDoc7 ont été déplacés dans /opt/scodoc-data/config/dept # les départements ScoDoc7 ont été déplacés dans /opt/scodoc-data/config/dept
for f in "$SCODOC_VAR_DIR"/config/depts/*.cfg for f in "$SCODOC_VAR_DIR"/config/depts/*.cfg
do do
dept=$(basename "${f%.*}") dept=$(basename "${f%.*}")
# Liste des bases de données de département: echo
psql -l | awk '{print $1;}' | grep ^SCO | grep -v SCOUSERS | grep -v SCO8USERS echo "----------------------------------------------"
echo "| MIGRATION DU DEPARTEMENT $dept"
echo "----------------------------------------------"
su -c "(cd $SCODOC_DIR && flask import-scodoc7-dept)" "$dept"
echo "restarting postgresql server..."
systemctl restart postgresql
done done
# Précaution a priori inutile (import-scodoc7-dept efface les caches)
systemctl restart redis
# Commande listant les nom des departement en DB:
# Liste des bases de données de département:
# dept_db=$(psql -l | awk '{print $1;}' | grep ^SCO | grep -v SCOUSERS | grep -v SCO8USERS | awk '{print substr($1,4);}')

View File

@ -1,31 +0,0 @@
#!/opt/zope213/bin/python
# -*- coding: utf-8 -*-
"""
ScoDoc post-upgrade script.
This script is launched by upgrade.sh after each SVN update.
Run as "root" with Zope shutted down and postgresql up,
_before_ upgrading the database.
E. Viennet, June 2008
Mar 2017: suppress upgrade of very old Apache configs
Aug 2020: move photos to .../var/scodoc/
Apr 2021: bug #70
Jun 2021: update for ScoDoc8
"""
import os
import sys
import glob
import shutil
from scodocutils import log, SCODOC_DIR, SCODOC_VAR_DIR, SCODOC_LOGOS_DIR, SCO_TMPDIR
if os.getuid() != 0:
log("postupgrade.py: must be run as root")
sys.exit(1)
# Continue here...
# ---
sys.exit(0)