Entretien du système

Pour que notre installation de serveur web reste belle et propre, il faut la maintenir à jour.

Mise à jour et nettoyage

Il faut maintenir notre système à jour, certains utilisent des scripts lancés en cron qui mettent à jour le système sans rien demander, mais on ne va pas aller jusque la, en effet il est préférable de valider quel paquetage doit être mis à jour ou non. (Nouvelle version de php incompatible avec nos sites, etc…) Il faut également faire le ménage dans ce que contient la machine, programmes inutiles, vieux fichiers, logs… On va simplement créé un script qu’on lancera de temps en temps et qui contient toutes les commandes pour garder à jour note système.

Mise en place

Tout d’abords on va ajouter un ou deux programmes :

apt-get install deborphan debian-goodies

On créé un fichier qu’on va limiter à l’utilisateur root et qu’on pourra lancer de n’importe ou :

echo '#!/bin/bash' > /usr/local/bin/scriboxupd
chown root:root /usr/local/bin/scriboxupd
chmod 700 /usr/local/bin/scriboxupd

Script

Les commandes exécutées par le script sont commentées dedans :

nano /usr/local/bin/scriboxupd

#!/bin/bash
# Automatic update and cleaning of the system
#
# More detail about this script on:
# http://jcd.lv/post/2013/04/01/Debian-squeeze-64-sur-VPS-OVH
#
# Copyright (c) Jean-Christian Denis <http://jcd.lv>
# This script is licensed under GNU GPL version 2.0 or above
#
# Version: 2013.04.19.1
#
PROGNAME=$(basename $0)

echo “System maintenance script”

# Display error and exit
function error_exit
{
echo -e “${PROGNAME}: ${1:-“Unknow error”}” 1>&2
exit 1
}

# Test commands and exit if not exist (can check up to 9 commands at once)
function command_exist
{
# Loop through arguments
for arg in $*
do
# Use ‘command -v’ wich return 0 when argument not found
command -v $arg >/dev/null || error_exit “Missing command ‘$arg’.”
done
}

# Display a beautiful message
function part_msg
{
echo -e “\e[33m [+] ${PROGNAME}: ${1:-“Starting new action”}…\e[0m”
}

# Script requires root privilege
[ “$UID” -ne 0 ] && error_exit “Require root privileges. \nTry ‘sudo $PROGNAME”

# Check required programmes
command_exist ‘apt-get’ ‘dpkg’ ‘rkhunter’ ‘deborphan’ ‘checkrestart’

# Parse script arguments
force=
for argument in $*
do
case $argument in
# Script reply Yes to all query if you use ‘scriboxupd -force’
“-force”) force=” -y” ;;
“-f”) force=” -y” ;;
*) error_exit “Unknow argument.”
esac
done

# Actions (self explain)

part_msg “Update packages list”
apt-get update

part_msg “Upgrade packages”
apt-get upgrade $force

part_msg “Clean packages list”
apt-get clean

part_msg “Auto clean packages”
apt-get autoclean

part_msg “Auto remove packages”
apt-get autoremove

part_msg “Purge config”
dpkg –purge $(COLUMNS=200 dpkg -l | grep “^rc” | tr -s ‘ ‘ | cut -d ‘ ‘ -f 2)

part_msg “Remove orphan packages”
apt-get remove –purge `deborphan –guess-all` $force

part_msg “Anti rootkit propupd”
rkhunter –propupd

part_msg “Anti rootkit update”
rkhunter –update

part_msg “Check services using old libraries”
checkrestart -v

echo “$PROGNAME: Update successfully completed”
exit 0

Comme on a pas de tête on ajoute un petit rappel dans notre bash qui sera affiché lors de nos connexions à la console :

echo "echo 'Remember to maintain your system up to date with scriboxupd'" >> /home/jcdenis/.bashrc

Il n’y a plus qu’à tester en relançant notre bash puis la commande :

. /home/jcdenis/.bashrc
scriboxupd

Au suivant

On reviendra sur ce script au fur et à mesure de nos besoins et de nos découvertes, pour l’instant ce n’est qu’un entrainement à l’écriture de script shell. Dans le prochain article on va se détendre un peu et voir quelques trucs et astuces pour gagner du temps.

Sources

Atbildēt

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti kā *