Installer un certificat Let’s Encrypt

BUT : Installer un certificat SSL let’s Encrypt sur un site web (Apache) sous ubuntu

Vous devez avoir configuré votre site web pour qu’il soit accessible sans certificat SSL, c’est à dire en mode http://nom_de_domaine.ext

Nous allons installer le magasin snap :

sudo snap install core
sudo snap refresh core

Suppression d’une ancienne version si besoin, puis installation de la dernière version de certbot :

sudo apt remove certbot

Installation de certbot :

sudo snap install --classic certbot

Pour Installer un certificat de manière interactive sur tous les sites du serveur Apache :

sudo certbot --apache

Répondre aux différentes question :

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): 

Donnez votre adresse e-mail, cette adresse sera utilisée pour les avertissements de sécurités ou les renouvellement de licence SSL

Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017-w-v1.3-notice.pdf.
You must agree in order to register with the ACME server. Do you agree?

Vous devez accepter les conditions d’utilisation en répondant : Y

Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.

Attention, ici on vous demande si vous acceptez de recevoir des informations de « Electronic Frontier Foundation » et de partager cette adresse avec leur partenaires. Répondre Y pour l’inscription aux news letters. Répondre N pour ne pas recevoir de mail d’information et publicitaire.

Account registered.

Which names would you like to activate HTTPS for?
We recommend selecting either all domains, or all domains in a VirtualHost/server block.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: nom_de_domaine.ext
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 

S’il y a plusieurs noms de domaine, sélectionnez ceux qui doivent obtenir un certificat SSL en donnant les numéros de domaine séparés par des espaces ou des virgule. Laisser vide si vous voulez sélectionner tous les domaines.

Requesting a certificate for nom_de_domaine.ext

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/nom_de_domaine.ext/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/nom_de_domaine.ext/privkey.pem
This certificate expires on 2022-12-08.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

Deploying certificate
Successfully deployed certificate for nom_de_domaine.ext to /etc/apache2/sites-available/nom_de_domaine.ext-le-ssl.conf
Congratulations! You have successfully enabled HTTPS on https://nom_de_domaine.ext

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Ou pour installer un certificat sur un seul site :

sudo certbot --apache -n -d nom_de_domaine.ext

Et voilà votre site est désormais accessible via https://nom_de_domaine.ext

Installation Nextcloud sur un serveur Ubuntu 22.04 LTS

BUT : Installation d’un serveur Nextcloud sur un serveur Ubuntu 22.04 LTS

Installation des modules utiles à Nextcloud. Un serveur web (apache/PHP) et une base de donnée (MariaDB). MariaDB est compatible avec MySQL, avec de meilleurs performances et stabilité. Ouverture d’un terminal avec les touches CTRL-ALT-T :

sudo apt update && sudo apt upgrade
sudo apt install apache2 mariadb-server libapache2-mod-php \
   php-gd php-mysql php-curl php-mbstring php-intl php-gmp \
   php-bcmath php-xml php-imagick php-zip php-bz2 php-imap php-smbclient php-ldap

Lancement de MariaDB :

sudo mysql

MariaDB affichera son message de bienvenu, puis une ligne d’attente pour entrer les commandes SQL :

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 31
Server version: 10.6.7-MariaDB-2ubuntu1.1 Ubuntu 22.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

Création de l’utilisateur de la base de donnée : ‘nextcloud_user’.
Le nom de l’utilisateur peut être modifié.
Il faut changer ‘password’ par un autre mot de passe :

CREATE USER 'nextcloud_user'@'localhost' IDENTIFIED BY 'password';
CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud_user'@'localhost';
FLUSH PRIVILEGES;

Sorti de la base de donnée par la commande :

exit;

Téléchargement du fichier d’archive, de la somme de contrôle et de la clé GPG de Nextcloud depuis le serveur officiel :

wget https://download.nextcloud.com/server/releases/latest.tar.bz2
wget https://download.nextcloud.com/server/releases/latest.tar.bz2.md5
wget https://download.nextcloud.com/server/releases/latest.tar.bz2.asc
wget https://nextcloud.com/nextcloud.asc
# vérification du bon téléchargement de nextcloud
md5sum latest.tar.bz2 ; cat latest.tar.bz2.md5
# contrôle de l'authenticité du fichier
gpg --import nextcloud.asc
gpg --verify latest.tar.bz2.asc latest.tar.bz2
# un message Good signature doit apparaitre

Extraction de l’archive puis copie du résultat dans le répertoire du serveur web.
Changement d’utilisateur par ‘www-data’ (utilisateur du serveur web) :

tar -xjvf
sudo cp -r nextcloud /var/www
sudo chown -R www-data:www-data /var/www/nextcloud

Configuration du serveur web. Il existe deux options soit l’utilisation d’une adresse de type « https://nom_de_domaine.ext/nextcloud » (ou http://192.168.0.200/nextcloud) ou une adresse de type « https://nextcloud.nom_de_domaine.ext ». Dans le premier cas il n’y a pas besoin de gérer la DNS du serveur contrairement au deuxième cas qui nécessite la configuration du domaine chez le provider du nom de domaine (OVH, GANDI, IONOS, etc).

Création du fichier de configuration du serveur web (apache) avec une adresse de type « https://nom_de_domaine.ext/nextcloud » (ou http://192.168.0.200/nextcloud) :

sudo nano /etc/apache2/sites-available/nextcloud.conf

Copie du code :

Alias /nextcloud "/var/www/nextcloud/"

<Directory /var/www/nextcloud/>
  Require all granted
  AllowOverride All
  Options FollowSymLinks MultiViews

  <IfModule mod_dav.c>
    Dav off
  </IfModule>
</Directory>

Sorti de l’éditeur en utilisant CTRL-O (pour enregistrer le fichier avec validation du nom par la touche ‘Entrée’) puis CRTL-X (pour sortir de l’éditeur) :

Création du fichier de configuration du serveur web (apache) avec une adresse de type « https://nextcloud.nom_de_domaine.ext » (ou http://nextcloud.nom_de_domaine.ext) :


sudo nano /etc/apache2/sites-available/nextcloud.conf

Copie du code suivant (en modifiant nextcloud.nom_de_domaine.ext par le vrai nom de domaine) :

<VirtualHost *:80>
  DocumentRoot /var/www/nextcloud/
  ServerName  nextcloud.nom_de_domaine.ext

  <Directory /var/www/nextcloud/>
    Require all granted
    AllowOverride All
    Options FollowSymLinks MultiViews

    <IfModule mod_dav.c>
      Dav off
    </IfModule>
  </Directory>
</VirtualHost>

Sorti de l’éditeur en utilisant CTRL-O (pour enregistrer le fichier avec validation du nom par la touche ‘Entrée’) puis CRTL-X (pour sortir de l’éditeur) :

Activation du site :

sudo a2ensite nextcloud.conf

Activation des modules utiles au bon fonctionnement du site :

sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod env
sudo a2enmod dir
sudo a2enmod mime
sudo a2enmod setenvif

Redémarrage du serveur web :

sudo service apache2 restart

Si un certificat SSL est nécessaire voir l’article sur l’installation d’un certificat Let’s Encrypt :

https://grappe.info/installer-un-certificat-lets-encrypt

La configuration de nextcloud est prête à être lancée via l’adresse du site
http://nom_de_domaine.ext ou https://nextcloud.nom_de_domaine.ext
ou
http://nom_de_domaine.ext/nextcloud ou https://nom_de_domaine.ext/nextcloud
ou
http://192.168.0.1/nextcloud (avec 192.168.0.1 à remplacer par l’adresse IP locale du serveur)
Une page de configuration s’affiche :

Configuration de Nextcloud

Répondre aux diverses questions pour finir la configuration :
Nom d’utilisateur : admin
Mot de passe : password_admin (à replacer par un autre mot de passe)
Répertoire de données : /var/www/nextcloud/data (aucune raison de le changer)
Utilisateur de la base de données : nextcloud_user (voir la config en début de tuto)
Mot de passe de la base de données : password (celui de la config dans MariaDB)
Nom de la base de données : nextcloud
Cliquer sur le bouton « Installer »

Après quelques minutes l’installation de base est terminée

Nextcloud propose les applications recommandées, sachant que l’installation , le paramétrage ou la désinstallation peut se faire à tout moment depuis la console d’administration.

Bravo, le serveur Nextcloud est opérationnel

Conversion Machine Virtuelle en Réelle

BUT : Créer une machine virtuelle de test puis la transférer sur une vrai machine, au travers de la conversion du disque virtuel et disque physique

Les émulateurs d’UC ne manquent pas, mais les deux plus simples à installer sont VirtualBox et VMWare.
Partons du principe que vous avez créer une machine virtuelle sous VMWare et que vous avez un disque de type ‘vmdk’. Nous allons convertir ce format en une image disque de type ‘raw’. C’est un format qui n’utilise ni compression ni organisation propre à un logiciel, c’est le type de fichier image disque que vous obtiendriez en copiant un disque avec la commande ‘dd’.

Installons l’outil de conversion pour les disques de type VMWare (vmdk) :

sudo apt install -y qemu-kvm

Convertissons le disque provenant de la machine virtuelle en disque ‘raw’ :


qemu-img convert disk_vmware.vmdk -O raw disk_image.img

ATTENTION : Nous allons écrire sur le disque de destination, il ne faut pas se tromper de disque, l’écriture sur le mauvais disque est irréversible et généralement totalement destructeur. Trouvons le disque de destination avec ‘fdisk’

sudo fdisk -l
Disque /dev/nvme0n1 : 1,82 TiB, 2000398934016 octets, 3907029168 secteurs
Disk model: Sabrent Rocket Q                        
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : gpt
Identifiant de disque : DA047CB5-EC5B-4F7A-8EA4-FC882F6873F7

Périphérique       Début        Fin   Secteurs Taille Type
/dev/nvme0n1p1      2048    2099198    2097151  1024M Système EFI
/dev/nvme0n1p2   2099200    2361343     262144   128M Réservé Microsoft
/dev/nvme0n1p3   2361344  134795263  132433920  63,1G Données de base Microsoft
/dev/nvme0n1p4 134795264  403230718  268435455   128G Système de fichiers Linux

Disque /dev/sdc : 476,94 GiB, 512110190592 octets, 1000215216 secteurs
Disk model: 2115            
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 33553920 octets

Vous avez obtenu la liste de vos disques branché sur votre ordinateur. Dans cet exemple le Disque ‘/dev/nvme0n1’ est le disque principal contenant notre système (ici Windows et Linux) et le disque ‘Disque /dev/sdc’ est le disque que nous avons branché pour la copie de l’image disque.

sudo dd if=disk_image.img of=/dev/sdc bs=8G

Si vous désirez voir la progression du transfert vous pouvez utiliser la commande ‘pv’ comme suit

# si la commande 'pv' n'est pas encore installée l'installer via 'apt'
sudo apt install -y pv
# puis le transfert de l'image vers le disque dur
# ne pas oublier de changer /dev/sdX en fonction de votre config
dd if=disk_image.img bs=8G | pv -L 8G | sudo dd of=/dev/sdc bs=8G

Voici un disque dur à l’identique du disque virtuel de votre machine VMWare. Il faudra peut être activer la partition de boot suivant votre besoin.

Oui mais moi j’utilise VirtualBox !!!

ah oui, bien sûr, j’en ai parlé en début d’article donc nous allons faire la même manipulation pour les utilisateur de VirtualBox qui ont un disque de type ‘vdi’. Je pars du principe que vous avez déjà installé VirtualBox. Nous allons faire la conversion de la même façon que nous l’avions fait pour VMWare :

# Installation de VirtualBox si ce n'est pas déjà fait
sudo apt install -y virtualbox
# conversion du disque de type 'vdi' en format 'raw'
VBoxManage clonehd virtualbox_disk.vdi disk_image.img.img --format RAW

Vous voilà en possession d’un disque physique copie conforme de votre disque virtuel.

NordVPN sous ubuntu 22.04

BUT : utiliser le VPN NordVPN en ligne de commande sous Ubuntu 22.04

Il semblerait qu’il y ai un bug qui empêche le client NordVPN de fonctionner normalement en ligne de commande sous Ubuntu 22.04

Installation de NordVPN

Téléchargement du fichier nordvpn sur leur site à l’adresse suivante dans un terminal :
https://repo.nordvpn.com/deb/nordvpn/debian/pool/main/nordvpn-release_1.0.0_all.deb

wget https://repo.nordvpn.com/deb/nordvpn/debian/pool/main/nordvpn-release_1.0.0_all.deb

puis installation du fichier :

sudo apt install ./nordvpn-release_1.0.0_all.deb
sudo apt update
sudo apt install nordvpn

Utilisation de NordVPN

Pour commencer il faut se loguer sur son compte NordVPN avec la commande ‘nordvpn login’

nordvpn login

un lien s’affiche il suffit de l’ouvrir dans un navigateur Internet puis de se logger sur son compte
enfin on retourne dans le terminal pour se connecter à un serveur VPN avec la commande ‘nordvpn connect’ ou ‘nordvpn c’

nordvpn c

S’il y a un message d’erreur de login

si un message d’erreur indiquant que vous n’êtes pas loguer apparaît alors utilisez la méthode suivante avant la commande de login : tapez ‘su – $USER’ puis tapez votre mot de passe utilisateur

su - $USER
#   <tapez ensuite votre mot de passe>
nordvpn login
#   clic droit sur le lien affiché puis 'ouvrir le lien'

Maintenant vous êtes loguer

Adresses funs pour se détendre

BUT : Se détendre et s’amuser un peu

Se faire passer pour un hacker :

Lancez votre navigateur préféré puis aller sur l’adresse suivante :
https://www.geektyper.com/fsociety

Puis appuyez sur la touche F11 pour passez en plein écran et tapez n’importe quoi dans le terminal ouvert, vous passerez pour le spécialiste que nous voyons tous dans les films de hackers.

Se faire passer pour un hacker sur un terminal :

Ouvrir un terminal puis installez ‘hollywood’ :

sudo apt install hollywood

Utilisation : lancez la commande ‘hollywood’

hollywood

Pour sortir il suffit de taper les touches CTRL+C

Regarder STAR WAR sur un écran texte :

Trop classe, totalement inutile, donc indispensable. Il faut installer la commande telnet si elle n’est pas déjà installée, puis on lance l’adresse ‘towel.blinkenlights.nl’ dans un terminal telnet

# installation du terminal telnet s'il n'est pas déjà installé
sudo apt install telnet
# lancement du film
telnet towel.blinkenlights.nl

Obtenir la météo en ligne de commande :

On utilise la commande ‘curl’ avec l’adresse ‘wttr.in/Nom_De_La_Ville’ par exemple pour strabourg :

# installation de curl si la commande n'est pas déjà installée
sudo apt install curl
# affichage de la météo pour strasbourg
curl wttr.in/strasbourg

Pour obtenir de l’aide :

curl -H "Accept-Language: fr" wttr.in/:help
bzg@uc:~$ curl -H "Accept-Language: fr" wttr.in/:help
Usage:

    $ curl wttr.in          # emplacement actuel
    $ curl wttr.in/cdg      # météo à l'aéroport de Paris - Charles de Gaulle

Types d'emplacements acceptés:

    /paris                  # nom de la ville
    /~Eiffel+tower          # emplacement quelconque
    /Москва                 # nom Unicode ou emplacement quelconque dans n'importe quelle langue
    /muc                    # code aéroport (3 lettres)
    /@stackoverflow.com     # nom de domaine
    /94107                  # code postal (seulement aux États-Unis)
    /-78.46,106.79          # coordonnées GPS

Emplacements particuliers:

    /moon                   # phases de la lune (ajouter ,+US ou ,+France pour accéder aux villes du même nom)
    /moon@2016-10-25        # phases de la lune pour cette date (@2016-10-25)

Unités:

    ?m                      # système métrique (par défaut partout sauf pour les États-Unis d'Amérique)
    ?u                      # USCS (par défaut pour les États-Unis d'Amérique)
    ?M                      # affiche la vitesse du vent en m/s

Option d'affichage:

    ?0                      # aujourd'hui seulement
    ?1                      # aujourd'hui + demain
    ?2                      # aujourd'hui + 2 jours
    ?n                      # version courte (seulement le jour et la nuit)
    ?q                      # version silencieuse (pas d'en-tête "Prévisions météo pour")
    ?Q                      # version super-silencieuse (pas d'en-tête "Prévisions météo pour", pas de nom de la ville)
    ?T                      # séquences d'échappement pour terminaux désactivées (pas de couleurs)

Options PNG:

    /paris.png              # génère un fichier PNG
    ?p                      # ajoute un cadre autour de la sortie
    ?t                      # transparency 150 (transparence 150)
    transparency=...        # transparence de 0 à 255 (255 = pas de transparence)

Combiner les options:

    /Paris?0pq
    /Paris?0pq&lang=fr
    /Paris_0pq.png          # dans le mode PNG les options sont spécifiées après _
    /Rome_0pq_lang=it.png   # les options longues sont séparées par des underscores _

Localisation:

    $ curl fr.wttr.in/Paris
    $ curl wttr.in/paris?lang=fr
    $ curl -H "Accept-Language: fr" wttr.in/paris

Langues supportées:

    am ar af be bn ca da de el et fr fa hi hu ia id it lt mg nb nl oc pl pt-br ro ru ta tr th uk vi zh-cn zh-tw (Support complet)
    az bg bs cy cs eo es eu fi ga hi hr hy is ja jv ka kk ko ky lv mk ml mr nl fy nn pt pt-br sk sl sr sr-lat sv sw te uz zh zu he (Support incomplet)

URLs particulières:

    /:help                  # affiche cette page
    /:bash.function         # fonction bash recommandée wttr()
    /:translation           # affiche les informations sur la traduction de wttr.in

Et ça fonctionne même avec votre navigateur Internet préféré :
https://wttr.in/strasbourg

Bon amusement

Décompression des fichiers archives en ligne de commande

BUT : Décompression de fichiers archives en ligne de commande en fonction de leurs extensions

fichier.zip

unzip fichier.zip

fichier.tar

tar xvf fichier.tar

fichier.tar.gz

tar xvzf fichier.tar.gz

fichier.tgz

tar xvzf fichier.tgz

fichier.tar.bz2

tar xvjf fichier.tar.bz2

fichier.tar.xz

tar xvJf fichier.tar.xz

fichier.tbz2

tar xvjf fichier.tbz2

fichier.bz2

bunzip2 fichier.bz2

fichier.rar

unrar x fichier.rar

fichier.gz

gunzip fichier.gz

fichier.7z

7z x fichier.7z
      *.tgz)       tar xvzf "$1"    ;;

Sauvegardes incrémentales en FTP

BUT : Créer une sauvegarde incrémental (style rsync) en FTP, seuls les fichiers modifiés ou ajoutés seront transférés

Remplacer :
FTP_SERVER par l’url ou l’IP du serveur
FTP_LOGIN par le login (user)
FTP_PASSWD par le mot de passe
DL_DIR par le répertoire local où vous voulez télécharger les fichiers
EXT_DIR par le répertoire distant à télécharger

lftp -f "
open FTP_SERVER
user FTP_LOGIN FTP_PASSWD
lcd DL_DIR
mirror --delete --verbose EXT_DIR DL_DIR
bye
"

Mise à jour / Installation de composer

BUT : Installation ou mise à jour de la commande composer

composer est un gestionnaire de dépendance pour les projets php. Il permet de gérer les modules/paquets à installer ou à mettre à jour pour vos projets (exemple laravel, etc).
Sous ubuntu l’installation via apt installe la version 1.x de composer et non pas la version 2.x
Voici un petit script qui va installer (ou mettre à jour) composer :

nano update-composer
#!/bin/bash
#
#    Installation ou Mise à Jour de composer
#

# relance automatiquement ce script en mode root si user standard
[ ! $UID -eq 0 ] && echo "Lancement en mode ROOT" && sudo $0 "$@" && exit

echo "Installation de 'composer' v2"

# récupération de la version de composer (0 si non installé)
[ ! "$(command -v composer)" ] && COMPOSER_VERSION=0 || COMPOSER_VERSION=$(composer -V | sed -e "s/version //g" | cut -d " " -f 2 | cut -d "." -f 1)

if [ $COMPOSER_VERSION -eq 2 ]
then
  # version 2
  echo "composer v2 : pas de mise à jour"
else
  # version 1 ou non installée
  [ $COMPOSER_VERSION -eq 1 ] && [ -f /usr/bin/composer ] && echo "composer v1 : mise à jour" && mv /usr/bin/composer /usr/bin/composer-v1
  # récupération checksum du dernier script
  EXPECTED_CHECKSUM="$(php -r 'copy("https://composer.github.io/installer.sig", "php://stdout");')"
  php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
  ACTUAL_CHECKSUM="$(php -r "echo hash_file('sha384', 'composer-setup.php');")"
  if [ "$EXPECTED_CHECKSUM" != "$ACTUAL_CHECKSUM" ]
  then
    >&2 echo "ERROR: la checksum de l'installateur est invalide"
    rm composer-setup.php
    exit 1
  fi
  echo "composer v2 : installation"
  php composer-setup.php --quiet
  RESULT=$?
  rm composer-setup.php
  [ $RESULT -eq 0 ] && echo "composer v2 : installée"
fi

Enregistrez le fichier avec CTRL + O (la touche o pas zéro)

Sortir de l’éditeur nano avec CTRL + X

Rendre exécutable le script :

chmod +x update-composer

Puis lancer le script :

./update-composer
Lancement en mode ROOT
[sudo] password for bzg: 
Installation de 'composer' v2
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Continue as root/super user [yes]? yes

Si composer existe déjà il va dire qu’il ne faut pas le lancer en mode root, répondre ‘yes’ car composer n’est utilisé ici que pour connaitre sa version

composer sera soit installé ou mis à jour si besoin avec ce script que vous pourrez installer sur tous vos serveurs utilisant laravel, symphony ou tout autre projet utilisant composer

Mise à jour serveur Ubuntu

BUT : simplifier la mise à jour d’un serveur ubuntu

Vous en avez marre de faire des sudo apt update puis sudo apt upgrade à tour de bras ?
Simplifiez vous la vie avec ce petit script qui va vous permettre d’accélérer le processus.
Attention, ce script doit être lancé manuellement et non pas depuis un ‘cron’ (tache automatisée), car il utilise ‘apt upgrade’ qui ne doit pas être lancé ‘en aveugle’. En effet certaines mises à jour nécessitent une action de votre part, par exemple pour les fichiers de configuration qui sont modifiés par le gestionnaire de mise à jour, apt vous demande si vous voulez conserver votre fichier de configuration ou le remplacer par le nouveau.

Créons notre script avec l’éditeur nano :

nano update-os
#!/bin/bash
#
#    Mise à Jour OS
#

# Relance automatiquement ce script en mode root si user standard
  [ ! $UID -eq 0 ] && echo "Lancement en mode ROOT" && sudo $0 "$@" && exit

echo "Mise à jour du système d'exploitation"

# test si besoin de faire une mise à jour
if [ $(cat /var/lib/update-notifier/updates-available | grep -Ev '^$' | grep -E '^[0-9]' | cut -d ' ' -f 1 | head -n 1) -eq 0 ]
then
  echo "system à jour"
else
  apt update && sudo apt upgrade -y && sudo apt autoremove -y
fi

# test si besoin d'un reboot
if [ ! "$(/usr/lib/update-notifier/update-motd-reboot-required)" ]
then
  echo "pas besoin de reboot"
else
  echo "--- ATTENTION REBOOT ---"
  # option -f pour forcer le reboot si besoin
  [ "$1" = "-f" ] && reboot || echo "sudo reboot"
fi

Enregistrez le fichier avec CTRL + O (la touche o pas zéro)

Sortir de l’éditeur nano avec CTRL + X

Rendre exécutable le script :

chmod +x update-os

Lancez le script :

./update-os

S’il n’y a pas de mise à jour ni besoin de reboot voici ce qui s’affiche

Lancement en mode ROOT
[sudo] password for bzg:
Mise à jour du système d'exploitation
system à jour
pas besoin de reboot

Vous pouvez aussi lancer ce script directement avec le privilège ‘sudo’ :

sudo ./update-os
Mise à jour du système d'exploitation
system à jour
pas besoin de reboot

Si le système a besoin d’une mise à jour elle sera lancée automatiquement
Et s’il y a besoin d’un reboot le message suivant s’affichera :

Mise à jour du système d'exploitation
system à jour
--- ATTENTION REBOOT ---
sudo reboot

Lancez alors un sudo reboot
Pour simplifier la manipulation : triple cliquez sur la ligne où s’affiche ‘sudo reboot’ pour que la ligne entière apparaisse en surbrillance

Faite ensuite soit :

MAJ + INSER

soit :

MAJ + CTRL + V

dans les deux cas la ligne en surbrillance sera collée et donc lancera automatiquement le ‘sudo reboot’

Vous pouvez aussi lancer le script avec l’option -f pour forcer le reboot s’il est nécessaire, mais attention à ne pas forcer le mode reboot si vous avez un tache importante qui tourne déjà :

sudo ./update-os -f