Utilisation des scripts shell pour automatiser les tâches de maintenance du système Linux - Partie 4

Utilisation des scripts shell pour automatiser les tâches de maintenance du système Linux - Partie 4

Il y a quelque temps, j'ai lu que l'une des caractéristiques distinctives d'un administrateur / ingénieur de système efficace est la paresse. Cela semblait un peu contradictoire au début, mais l'auteur a ensuite expliqué pourquoi:

Série RHCE: Automatiser les tâches de maintenance du système Linux - Partie 4

Si un Sysadmin passe la plupart de son temps à résoudre les problèmes et à effectuer des tâches répétitives, vous pouvez soupçonner qu'il ou elle ne fait pas les choses très bien. En d'autres termes, un administrateur / ingénieur du système efficace devrait élaborer un plan pour effectuer des tâches répétitives avec aussi moins d'action de sa part que possible, et devrait prévoir des problèmes en utilisant,

Par exemple, les outils examinés dans la partie 3 - Monitor Rapports d'activité du système à l'aide de outils Linux de cette série. Ainsi, bien qu'il ou elle ne semble pas faire grand-chose, c'est parce que la plupart de ses responsabilités ont été prises en charge avec l'aide de Shell Scripting, ce dont nous allons parler dans ce tutoriel.

Qu'est-ce qu'un script shell?

En quelques mots, un script shell n'est rien de plus et rien de moins qu'un programme qui est exécuté étape par étape par un shell, qui est un autre programme qui fournit une couche d'interface entre le noyau Linux et l'utilisateur final.

Par défaut, le shell utilisé pour les comptes d'utilisateurs dans Rhel 7 est bash (/ bac / bash). Si vous voulez une description détaillée et un contexte historique, vous pouvez vous référer à cet article Wikipedia.

Pour en savoir plus sur l'énorme ensemble de fonctionnalités fournies par ce shell, vous voudrez peut-être vérifier son page, qui est téléchargé au format PDF à (commandes bash). En dehors de cela, il est supposé que vous connaissez les commandes Linux (sinon, je vous conseille fortement de passer par un guide de Newbies to Sysadmin Tecmint.com avant de procéder). Maintenant commençons.

Rédaction d'un script pour afficher les informations du système

Pour notre commodité, créons un répertoire pour stocker nos scripts de coquille:

# MKDIR SCRIPTS # CD SCRIPTS 

Et ouvrir un nouveau fichier texte nommé information système.shot avec votre éditeur de texte préféré. Nous commencerons par insérer quelques commentaires en haut et quelques commandes par la suite:

#!/ bin / bash # Exemple de script écrit pour la partie 4 de la série RHCE # Ce script renverra l'ensemble suivant d'informations système: # -hostname Informations: echo -e "\ e [31; 43m ***** Informations sur le nom d'hôte ***** \ e [0m "hostnamectl echo" "# -file Système Disk Space Utilisation: echo -e" \ e [31; 43m ***** Utilisation de l'espace disque du système de fichiers notre Mémoire gratuite et utilisée ***** \ e [0m "Free Echo" "# -System Uptime and Load: echo -e" \ e [31; 43m ***** Time et chargement du système ***** \ e [0m "Uptime Echo" "# -Logged-in Users: echo -e" \ e [31; 43m ***** Utilisateurs actuellement connectés ***** \ e [0m "qui écho" "# -top 5 Les processus en ce qui concerne l'utilisation de la mémoire concernant l'écho -e" \ e [31; 43m ***** Top 5 des processus consommateurs de mémoire ***** \ e [0m "ps -eo% mem,% cpu, comm --sort = -% mem | head -n 6 echo" "echo -e" \ e [1; 32mdone.\ e [0m " 

Ensuite, donnez au script exécuter les autorisations:

# chmod + x system_info.shot 

Et exécutez-le:

./information système.shot 

Notez que les en-têtes de chaque section sont affichés en couleur pour une meilleure visualisation:

Script de shell de surveillance du serveur

Cette fonctionnalité est fournie par cette commande:

echo -e "\ e [Color1; Color2M\ e [0m " 

Couleur 1 et Couleur2 sont les couleurs de premier plan et d'arrière-plan, respectivement (plus d'informations et d'options sont expliquées dans cette entrée du wiki arch Linux) et est la chaîne que vous voulez montrer en couleur.

Automatisation des tâches

Les tâches que vous devrez peut-être automatiser peuvent varier d'un cas à l'autre. Ainsi, nous ne pouvons pas couvrir tous les scénarios possibles dans un seul article, mais nous présenterons trois tâches classiques qui peuvent être automatisées à l'aide de scripts shell:

1) Mettez à jour la base de données de fichiers locaux, 2) trouver (et supprimer alternativement) les fichiers avec 777 autorisation, et 3) alerte lorsque l'utilisation du système de fichiers dépasse une limite définie.

Créons un fichier nommé Auto_Tasks.shot Dans notre répertoire Scripts avec le contenu suivant:

#!/ bin / bash # Exemple de script pour automatiser les tâches: #-update la base de données de fichiers locaux: echo -e "\ e [4; 32mMise à jour de la base de données de fichiers locaux\ e [0m "Updatedb si [$? == 0]; puis écho "La base de données de fichiers locale a été mise à jour correctement."else echo" La base de données de fichiers locale n'a pas été mise à jour correctement."fi echo" "# -find et / ou supprimer des fichiers avec 777 autorisation. echo -e "\ e [4; 32mÀ la recherche de fichiers avec 777 autorisations\ e [0m "# Activer l'une ou l'autre des options (commentez l'autre ligne), mais pas les deux. # Option 1: Supprimer les fichiers sans inciter à confirmer. Suppose la version GNU de Find. #Find -Type F -PERM 0777 -Delete # Option 2: Demandez la confirmation avant de supprimer les fichiers. Plus portable entre les systèmes. find -Type f -perm 0777 -exec rm -i  +; Echo "" #-alert lorsque l'utilisation du système de fichiers dépasse une limite définie Echo -e "\ e [4; 32mVérification de l'utilisation du système de fichiers\ e [0m "threshold = 30 while lise line; do # Cette variable stocke le chemin du système de fichiers en tant que système de fichiers de chaîne = $ (echo $ line | awk 'print $ 1') # Cette variable stocke le pourcentage d'utilisation (xx% ) Pourcentage = $ (echo $ line | awk 'imprimer $ $') # Utilisez le pourcentage sans le signe%. Usage = $ pourcentage%? si [$ usage -gt $ threshold]; Ensuite, l'écho "l'espace disponible restant dans $ filesystem est extrêmement bas. Utilisé: $ pourcentage "Fi fait < <(df -h --total | grep -vi filesystem) 

Veuillez noter qu'il y a un espace entre les deux < Signes dans la dernière ligne du script.

Script shell pour trouver 777 autorisation

Utilisation de Cron

Pour aller plus loin plus loin, vous ne voudrez pas vous asseoir devant votre ordinateur et exécuter ces scripts manuellement. Plutôt, vous utiliserez cron Pour planifier ces tâches à exécuter sur une base périodique et envoie les résultats à une liste prédéfinie de destinataires par e-mail ou enregistrez-les dans un fichier qui peut être consulté à l'aide d'un navigateur Web.

Le script suivant (FileSystem_usage.sh) exécutera le bien connu df -h commande, formatez la sortie dans une table HTML et enregistrez-la dans le rapport.html déposer:

#!/ bin / bash # Exemple de script pour démontrer la création d'un rapport HTML en utilisant Shell Scripting # répertoire Web Web_dir = / var / www / html # un peu CSS et la mise en page de table pour rendre le rapport un peu plus agréable "   .Titulo Font-Size: 1EM; Couleur blanche; Contexte: # 0863CE; rembourrage: 0.1em 0.2EM; Tableau Border-Collapse: effondrement;  table, td, th border: 1px solide noir;  "> $ Web_dir / rapport.HTML # Affichez le nom d'hôte et l'insérez-le en haut du corps HTML Host = $ (nom d'hôte) "Utilisation du système de fichiers pour l'hôte $ Hôte
Dernière mise à jour: $ (date)

">> $ web_dir / rapport.HTML # Lire la sortie de DF -H Line par ligne pendant la ligne de lecture; faire écho "">> $ web_dir / rapport.Html fait < <(df -h | grep -vi filesystem) echo "
Système de fichiers Taille Utiliser %
">> $ web_dir / rapport.HTML ECHO $ ​​LINE | awk 'print $ 1' >> $ web_dir / rapport.html echo "">> $ web_dir / rapport.HTML ECHO $ ​​LINE | awk 'print $ 2' >> $ web_dir / rapport.html echo "">> $ web_dir / rapport.HTML ECHO $ ​​LINE | awk 'print $ 5' >> $ web_dir / rapport.html echo "
">> $ web_dir / rapport.html

Dans notre Rhel 7 serveur (192.168.0.18), cela ressemble à ce qui suit:

Rapport de surveillance du serveur

Vous pouvez ajouter à ce rapport autant d'informations que vous le souhaitez. Pour exécuter le script tous les jours à 13h30, Ajouter l'entrée Crontab suivante:

30 13 * * * / root / scripts / filesystem_usage.shot 

Résumé

Vous pensez très probablement à plusieurs autres tâches que vous voulez ou que vous avez besoin d'automatiser; Comme vous pouvez le voir, l'utilisation des scripts de coquille simplifiera considérablement cet effort. N'hésitez pas à nous faire savoir si vous trouvez cet article utile et n'hésitez pas à ajouter vos propres idées ou commentaires via le formulaire ci-dessous.