{{tag>debian linux scripts todo}}
== Scripts ==
====== Audio ======
===== Jouer un fichier audio en fin de boot =====
# vi /etc/rc.local
Ajouter ce qui suit avant la ligne 'exit 0':
# Jouer un fichier wav en fin de boot
aplay /chemin/vers/le/fichier/fichier.wav
===== Jouer un fichier audio à l'arrêt du système =====
# vi /chemin/des/scripts/chord.sh
#! /bin/sh
### BEGIN INIT INFO
# Provides: chord
# Required-Start:
# Required-Stop:
# Default-Start:
# Default-Stop: 0 6
# Short-Description: Jouer Chord.wav à l'arrêt.
# Description:
### END INIT INFO
aplay /chemin/Chord.wav
Pour utiliser les procédés normaux de lancement automatique d'un script, il doit impérativement être dans ''/etc/init.d'' donc soit on le place là, soit on crée un lien symbolique :
# ln -s /chemin/vers/script/chord.sh /etc/init.d/chord.sh
Puis on indique à Debian de gérer ce script en fonction des paramètres qu'il contient (section ''INIT INFO'') :
# update-rc.d chord.sh defaults
====== Mises à jour ======
# vi /chemin/des/scripts/maj.sh
#!/bin/bash
#
if [ "$(id -u)" != "0" ]; then
echo "Faut être 'root' pour lancer ce script, patate!" 1>&2
exit 1
fi
echo "***** Mise à jour de la liste des paquets dispos *****"
aptitude update
sleep 3
echo "***** Mise à jour de la liste des fichiers dans les paquets dispos *****"
apt-file update
sleep 3
echo "***** Mise à jour des paquets installés ****"
aptitude safe-upgrade
sleep 3
echo "***** Mise à jour complète (kernel, paquets installés et désinstallation des dépendances obsolètes) ****"
aptitude full-upgrade
sleep 3
date "+%Y-%m-%d %H:%M : 0(màj faite)" >> /var/log/update_aptitude.log
echo "***** MISE A JOUR TERMINÉE *****"
echo ""
echo "***** Suppression des paquets .deb dans le cache *****"
aptitude clean
sleep 3
#echo "***** Purge des dépendances obsolètes *****"
#aptitude purge --purge-unused
echo "***** Liste des paquets orphelins *****"
deborphan
#echo "***** Suppression des paquets orphelins *****"
#aptitude remove --purge `deborphan`
echo "***** Suppression des résidus de logiciels supprimés *****"
aptitude purge `dpkg -l | grep "^rc" | tr -s ' ' | cut -d ' ' -f 2`
sleep 3
echo "***** Liste des noyaux détectés et leurs en-têtes *****"
dpkg --list | grep linux-image
dpkg --list | grep linux-headers
echo "** Pour supprimer des éléments obsolètes, utiliser par exemple:"
echo "aptitude remove linux-headers-2.6.20-15 linux-headers-2.6.20-15-generic linux-image-2.6.20-15-generic --purge"
echo "** IL EST RECOMMANDÉ DE CONSERVER 2 VERSIONS DU NOYAU **"
echo "***** NETTOYAGE TERMINÉ *****"
====== Sauvegardes ======
===== MySQL / MariaDB =====
**Excellente nouvelle** : ce script fonctionne aussi bien avec ''MySQL'' qu'avec ''MariaDB'' (en tout cas sur un système mis à jour [[archives:info:os:debian:de_jessie_a_stretch|de Jessie à Stretch]]) à part qu'il a fallu augmenter les privilèges de l'utilisateur //sqldumper// pour lui ajouter ''SUPER''.
Le but de ce script est de pouvoir automatiser via //crontab// des sauvegardes SQL compressées quotidiennes, hebdomadaires, mensuelles et annuelles.
* Les sauvegardes quotidiennes sont purgées au delà de 5 jours
* Les sauvegardes hebdomadaires sont purgées au delà de 31 jours
* Les sauvegardes mensuelles sont purgées au delà de 365 jours
* Les sauvegardes annuelles ne sont pas purgées automatiquement
La syntaxe est visible dans le script et expliquée par un message d'aide en cas d'erreur mais voici un exemple :
root@muffin:~# /mnt/muffin/scripts/sqlbackup.sh quotidien
===== 2018-01-23 06:43 =====
Sauvegarde de l'ensemble des bases dans un fichier unique...
==========================================
Sauvegarde des bases Kodi les plus récentes :
kodi_music60...
kodi_video107...
Sauvegarde de la base mysql...
Sauvegarde de la base mediatomb...
Sauvegarde de la base httpauth...
Sauvegarde de la base piwigo...
Sauvegarde de la base www...
==========================================
Suppression des sauvegardes quotidiennes vieilles de plus de 5 jours...
Suppression des sauvegardes hebdomadaires vieilles de plus de 31 jours...
Suppression des sauvegardes mensuelles vieilles de plus de 365 jours...
{{page>info:logiciels:kodi:sauvegarde_bdd}}
# vi /chemin/des/scripts/sqlbackup.sh
#!/bin/bash
#
if [ "$(id -u)" != "0" ]; then
echo "Faut être 'root' pour lancer ce script, patate!" 1>&2
exit 1
fi
## Vérif du paramètre fournit
case $1 in
"quotidien" | "hebdomadaire" | "mensuel" | "annuel" )
REP="/mnt/muffin/backups/MUFFIN/sqldumps/"$1;;
* )
echo
echo "SYNTAXE: sqlbackup.sh [periode]"
echo " [periode] doit être "quotidien", "hebdomadaire", "mensuel" ou "annuel"."
echo
exit 100;;
esac
UTIL="utilisateur_sqldump"
MDP="mdp_utilisateur_sqldump"
## Sauvegarde compressée des bases de donnees en fichiers .gz
echo ===== `date +%Y-%m-%d` `date +%H:%M` =====
echo "Sauvegarde de l'ensemble des bases dans un fichier unique..."
mysqldump -u$UTIL -p$MDP --lock-all-tables --all-databases --events | gzip > $REP/all_databases_`date +%Y-%m-%d`.gz
echo ==========================================
#echo "Sauvegarde de la base information_schema..."
mysqldump -u$UTIL -p$MDP --lock-all-tables information_schema | gzip > $REP/information_schema_`date +%Y-%m-%d`.gz
echo "Sauvegarde des bases Kodi les plus récentes :"
# Déterminer la base kodi_music la plus récente
MUSICDB=$(mysql -u$UTIL -p$MDP -e "Show databases;" | grep "kodi_music");
echo "$MUSICDB..."
mysqldump -u$UTIL -p$MDP --lock-all-tables $MUSICDB | gzip > $REP/${MUSICDB}_`date +%Y-%m-%d`.gz
# Déterminer la base kodi_video la plus récente
VIDEODB=$(mysql -u$UTIL -p$MDP -e "Show databases;" | grep "kodi_video")
echo "$VIDEODB..."
mysqldump -u$UTIL -p$MDP --lock-all-tables $VIDEODB | gzip > $REP/${VIDEODB}_`date +%Y-%m-%d`.gz
echo "Sauvegarde de la base mysql..."
mysqldump -u$UTIL -p$MDP --lock-all-tables --events mysql | gzip > $REP/mysql_`date +%Y-%m-%d`.gz
echo "Sauvegarde de la base piwigo..."
mysqldump -u$UTIL -p$MDP --lock-all-tables piwigo | gzip > $REP/piwigo_`date +%Y-%m-%d`.gz
echo ==========================================
#echo "===== Suppression des sauvegardes obsolètes ====="
echo "Suppression des sauvegardes quotidiennes vieilles de plus de 5 jours..."
find /mnt/muffin/backups/MUFFIN/sqldumps/quotidien/ -type f -mtime +4 | xargs -r rm
echo "Suppression des sauvegardes hebdomadaires vieilles de plus de 31 jours..."
find /mnt/muffin/backups/MUFFIN/sqldumps/hebdomadaire/ -type f -mtime +30 | xargs -r rm
echo "Suppression des sauvegardes mensuelles vieilles de plus de 365 jours..."
find /mnt/muffin/backups/MUFFIN/sqldumps/mensuel/ -type f -mtime +364 | xargs -r rm
## Pas de purge des sauvegardes annuelles