Les scripts bash sont une partie importante du travail d'un administrateur système. Ils vous permettent d'automatiser les tâches banales et critiques.

L'une des meilleures choses avec les scripts est qu'ils peuvent s'exécuter indépendamment sans intervention humaine, mais il peut parfois être difficile d'automatiser les tâches qui nécessitent des mots de passe utilisateur. Voyons comment vous pouvez automatiser en toute sécurité les scripts qui nécessitent des mots de passe sans compromettre la sécurité.

Création d'un script simple

Supposons que vous souhaitiez créer un script simple qui sauvegarde votre dossier de départ Linux vers un emplacement distant afin que vous puissiez facilement restaurer vos données en cas de perte de données.

Commencez par créer un fichier de script Bash dans votre dossier personnel, en utilisant la commande tactile ou toute autre méthode, et nommez-la backup_home.sh. N'hésitez pas à utiliser n'importe quel nom et répertoire de votre choix.

Le script utilise le

instagram viewer
rsync command, un puissant outil de copie de fichiers, afin de sauvegarder tous les fichiers de votre répertoire personnel local sur un serveur distant.

Copiez le contenu du script suivant et collez-le dans votre fichier Bash. N'oubliez pas de remplacer l'utilisateur john par le nom correct de votre utilisateur local. Fournissez également le nom d'utilisateur et l'adresse IP corrects du serveur distant.

#!/bin/bash
#Copier les données sur un serveur distant
rsync -avl --mkpath /home/john nom_utilisateur@télécommande_server/home/sauvegarde

Si vous n'avez pas de serveur distant pour tester, vous pouvez simplement installer VirtualBox et configurer une VM sur votre ordinateur local. Utilisez l'invité VM comme serveur distant.

Enregistrez le fichier. Pour exécuter le script, vous devez lui accorder l'autorisation d'exécution à l'aide de la commande sudo chmod 755. Tous les utilisateurs peuvent exécuter le script mais seuls les utilisateurs sudo peuvent modifier le fichier.

Enfin, exécutez le script Bash depuis le terminal à l'aide de la commande :

./backup_home.sh

Chaque fois que vous exécutez ce script, vous serez invité à entrer le mot de passe du serveur distant. Ce n'est pas idéal si vous souhaitez exécuter le script sans intervention humaine, comme lors de l'utilisation de Cron.

Automatisation de la connexion par mot de passe

Installer sshpass, un fournisseur de mot de passe non interactif, sur votre PC local ou sur le PC à partir duquel vous exécuterez le script.

Sur les distributions basées sur Debian

Si vous êtes sur une distribution basée sur Debian comme Ubuntu, Pop!_OS et Lubuntu :

sudo apt mise à jour && sudo apt installer sshpass

Sur RHEL et Fedora

dnf installer sshpass

Après avoir installé sshpass, modifiez le script pour qu'il ressemble à ceci.

#!/bin/bash
#Copier les données sur un serveur distant
sshpass-p "votre mot de passe" rsync -avl --mkpath /home/john nom_utilisateur@serveur_distant/home/Sauvegarde

Ici, vous fournissez le mot de passe en texte brut. Évidemment, ce n'est pas le moyen idéal, car ce n'est pas sûr et ce n'est pas une bonne pratique. Si jamais le script tombe entre de mauvaises mains, vous avez de gros problèmes.

Pour rendre cela plus sûr, nous utiliserons GnuPG, un outil de chiffrement sécurisé et open source.

Chiffrement de votre mot de passe

GnuPG est installé par défaut sur la plupart des systèmes Linux, mais s'il n'est pas installé sur votre système, voici comment installer GnuPG.

Créer un fichier caché nommé secrets en utilisant la commande toucher .secrets. Étant donné que nous avons masqué le fichier par défaut par mesure de sécurité supplémentaire, voici comment vous pouvez voir les fichiers cachés sous Linux.

Dans le fichier des secrets, entrez le mot de passe de votre PC distant et enregistrez-le.

Ensuite, cryptez le fichier à l'aide de la gpg commande.

sudogpg.secrets

Vous serez invité à entrer une phrase de passe sécurisée et forte pour ouvrir le fichier crypté.

GnuPG créera un nouveau fichier avec l'extension .gpg ajouté à l'ancien nom de fichier. Votre nouveau nom de fichier devrait maintenant être secrets.gpg, en supposant que vous avez utilisé le secrets nom de fichier.

Si vous affichez le contenu de secrets.gpg à l'aide de chat commande, vous serez présenté avec un texte charabia pour montrer que votre mot de passe est crypté.

Pour afficher le contenu du fichier en texte brut, vous devrez le décrypter à l'aide de la commande suivante (vous serez invité à saisir le mot de passe que vous avez défini lors du cryptage) :

gpg-dqsecret.gpg

Utilisation d'un mot de passe crypté dans votre script

Pour utiliser le mot de passe chiffré dans le script, mettez à jour le script comme suit :

#!/bin/bash
#Copier les données sur un serveur distant
gpg -dq secrets.gpg | sshpass rsync -avl --mkpath /home/john nom_utilisateur@télécommande_server/home/sauvegarde

Exécutez à nouveau les scripts de sauvegarde et cette fois, vous ne serez pas invité à entrer un mot de passe.

Automatisez les tâches avec des scripts bash

GnuGP est fréquemment utilisé pour sécuriser des fichiers et des données sensibles sur votre PC et est également un excellent outil pour sécuriser les mots de passe dans les scripts Bash automatisés sous Linux.

Vous pouvez faire beaucoup de choses avec les scripts Bash. Bash est un outil puissant qui peut vous aider à automatiser beaucoup de choses sur Linux et apprendre à écrire des scripts Bash est un investissement rentable.