GNU/Linux >> Tutoriels Linux >  >> Linux

Comment ajouter et supprimer des Cronjobs des instances Linux EC2 sur AWS à l'aide de scripts shell

Les opérations manuelles entraînent des erreurs humaines. L'ajout et la suppression fréquents de Cronjobs peuvent être une tâche très chronophage. Dans cet article, nous allons créer des scripts Shell qui automatisent l'ajout et la suppression de Cronjobs à partir d'instances Ubuntu EC2 sur AWS. Pour effectuer ces opérations, vous aurez besoin d'accéder à l'instance EC2. L'utilisateur que vous utiliserez doit avoir un accès sudo afin que l'utilisateur puisse passer à la racine et effectuer l'ajout et la suppression de Cronjobs.

Commençons.

Pré-requis

  1. Compréhension de base des scripts Shell et des tâches Cron.
  2. Compte AWS (créez si vous n'en avez pas).
  3. Instance EC2 avec l'utilisateur ayant un accès sudo (Cliquez ici pour apprendre à créer une instance EC2 si vous n'en avez pas ou si vous voulez apprendre)

Qu'allons-nous faire

  1. Créez un script shell pour ajouter des Cronjobs.
  2. Exécutez le script Shell pour ajouter un Cronjob.
  3. Créez un script shell pour supprimer les tâches cron.
  4. Exécutez le script Shell pour supprimer la tâche Cron.

Créer un script shell pour ajouter des Cronjobs

Créez un fichier sur votre système Linux local et ajoutez-y le code suivant. Vous pouvez également trouver le code sur mon dépôt Github sur le lien suivant.

Lien Github : https://github.com/shivalkarrahul/DevOps/blob/master/aws/shell-scripts/aws-ec2-add-remove-cron-job/add-cronjob.sh
Fichier : add-cronjob.sh
#!/bin/bashhelpFunction(){ echo "" printf "\033[1;32mUtilisation :$0 -K  -U  -I 
 -a " echo "" echo -e "\t-K \".pem clé du serveur sur lequel une tâche cron doit être ajoutée\"" echo -e "\t-U UserName du serveur sur lequel un cron doit être ajouté" echo -e "\t-I IP du serveur sur lequel un cron doit être ajouté" echo -e "\t-a Nom du cron à ajouter (entre guillemets doubles)" echo "Ajouter un nouvelle tâche Cron" echo "par exemple" echo "./add-cronjob.sh -K /Users/cloudcover/Documents/Rahul/access/rahuls.pem -U ubuntu -I ec2-35-180-234-158.eu-west-3.compute.amazonaws. com -a \"0 5 * * 1 testCronJob\"" echo -e "\033[0m" #réinitialiser la couleur exit 1 # Quitter le script après avoir imprimé l'aide}while getopts "I:K:U:a:" optdo case " $opt" dans K ) internalServerPemKey="$OPTARG" ;; U ) internalServerUser="$OPTARG";; I ) internalServerIP="$OPTARG";; a ) addCron="$OPTARG";; ? ) helpFunction;; # Affiche la fonction d'aide si le paramètre est inexistant esacdoneecho "*******************"#echo $listCronJobs# Affiche la fonction d'aide si les paramètres sont videsif [ -z "$internalServerIP" ] || [ -z "$internalServerPemKey" ] || [ -z "$utilisateurserveurinterne" ] || [ -z "$addCron" ]then printf "\033[1;31m" echo "Certains ou tous les paramètres sont vides" ; helpFunctionfi# Commencer le script si tous les paramètres sont correctsprintf "\033[1;33m-------------------------------- ---------------------------------Avant ssh"echo -e "\033[0m" #reset colorecho ". pem clé du serveur sur lequel un nouvel utilisateur a été créé :$internalServerPemKey"echo "UserName du serveur sur lequel un nouvel utilisateur a été créé :$internalServerUser"echo "IP du serveur sur lequel un nouvel utilisateur a été créé :$internalServerIP"echo "Nom du cron à ajouter :$addCron"printf "\033[1;31mConnexion à :"$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n"ssh -i " $internalServerPemKey" "$internalServerUser"@"$internalServerIP" <<> EOF echo "Utilisateur commuté sur ;" whoami printf "\033[1;33m----------------------------------------- --------------------Liste des tâches Cron avant l'ajout" echo -e "\033[0m" #reset color crontab -l | cat -n if [ -n "$addCron" ] then echo "Inside addCron" crontab -l>crontab.tmp printf '%s\n' "$addCron">>crontab.tmp crontab crontab.tmp &&rm -f crontab .tmp fi printf "\033[1;33m-------------------------------------------------------- ---------------------------Liste mise à jour des tâches Cron" echo -e "\033[0m" #reset color crontab -l | cat -n printf "\033[1;31mSortie de ---> "$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n" #echo "Utilisateur existant ---> $userName"EOFHERE 

Avant de créer un nouveau Cronjob, vérifiez si l'instance EC2 a des Cronjobs existants

Connectez-vous à l'instance EC2 et vérifiez les Cronjobs existants

ssh -i ~/Downloads/howtoforge-test.pem [email protected]

Lister les Cronjobs

crontab -l

Exécuter le script Shell pour ajouter un Cronjob

Accédez à votre machine Linux locale et ajoutez un Cronjob sur l'instance EC2 Ubuntu 18.04 à l'aide de la commande suivante. Cela créera un Cronjob qui sera déclenché toutes les minutes et écrira la date actuelle dans un fichier. Vous pouvez modifier le Cronjob selon vos besoins.

./add-cronjob.sh -K ~/Downloads/howtoforge-test.pem -U ubuntu -I ec2-15-236-64-128.eu-west-3.compute.amazonaws.com -a " * * * * * /bin/date>> /tmp/cron_output"

Désormais, vous pouvez également accéder à l'instance EC2 pour vérifier si le Cronjob a été ajouté ou non.

ssh -i ~/Downloads/howtoforge-test.pem [email protected]
sudo -i
crontab -l
cat /tmp/cron_output

Dans la capture d'écran suivante, vous pouvez voir que le Cronjob a été ajouté et exécuté toutes les minutes.

Créer un script shell pour supprimer Cronjobs

Maintenant, si vous pensez devoir supprimer le Cronjob que vous avez ajouté, vous pouvez facilement le faire en utilisant le script shell disponible sur mon Github.

Créez un nouveau fichier sur votre système local avec le code suivant.

Lien Github : https://github.com/shivalkarrahul/DevOps/blob/master/aws/shell-scripts/aws-ec2-add-remove-cron-job/remove-cronjob.sh
Fichier : remove-cronjob.sh
#!/bin/bashhelpFunction(){ echo "" printf "\033[1;32mUtilisation :$0 -K  -U  -I 
 -l " echo "" echo -e "\t-K \".pem clé du serveur sur lequel une tâche cron doit être supprimée\"" echo -e "\t-U UserName du serveur sur lequel une tâche cron doit être supprimée être supprimé" echo -e "\t-I IP du serveur sur lequel un travail cron doit être supprimé" echo -e "\t-l Liste les travaux cron existants, fournissez \"oui\" comme paramètre. Obtenez d'abord une liste et puis spécifiez le numéro de travail qui doit être supprimé" echo -e "par exemple" echo "Supprimer une nouvelle tâche Cron" echo "./remove-cronjob.sh -K /Users/cloudcover/Documents/Rahul/access/rahuls.pem -U ubuntu -I ec2-52-47-90-247.eu- west-3.compute.amazonaws.com -l yes" echo -e "\033[0m" #réinitialiser la couleur exit 1 # Quitter le script après avoir imprimé l'aide}while getopts "I:K:U:l:" optdo case "$ opt" dans K ) internalServerPemKey="$OPTARG" ;; U ) internalServerUser="$OPTARG";; I ) internalServerIP="$OPTARG";; l ) showListOfJobs="$OPTARG";; ? ) helpFunction;; # Affiche la fonction d'aide si le paramètre est inexistant esacdoneecho "*******************" echo $listCronJobs# Affiche la fonction d'aide si les paramètres sont vides si [ -z "$internalServerIP" ] || [ -z "$internalServerPemKey" ] || [ -z "$utilisateurserveurinterne" ] || [ -z "$showListOfJobs" ]then printf "\033[1;31m" echo "Certains ou tous les paramètres sont vides" ; helpFunctionfi# Commencer le script si tous les paramètres sont correctsprintf "\033[1;33m-------------------------------- ---------------------------------Avant ssh"echo -e "\033[0m" #reset colorecho ". pem clé du serveur sur lequel un nouvel utilisateur a été créé :$internalServerPemKey"echo "UserName du serveur sur lequel un nouvel utilisateur a été créé :$internalServerUser"echo "IP du serveur sur lequel un nouvel utilisateur a été créé :$internalServerIP"if [ $showListOfJobs =="yes" ]then printf "\033[1;31mConnexion à :"$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n" ssh -i "$internalServerPemKey" " "$internalServerUser"@"$internalServerIP" < "$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n"EOFHEREfiecho "Entrez le numéro de ligne de la tâche Cron à supprimer"lire lineNumberprintf " \033[1;31mConnexion à :"$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n"ssh -i "$internalServerPemKey" "$internalServerUser"@"$internalServerIP" <crontab.tmp crontab crontab.tmp &&rm -f crontab.tmp printf "\033[1;33m------------------- -----------------------------------------------Liste mise à jour des Cron Jobs" echo -e "\033[0m" #reset color crontab -l | cat -n printf "\033[1;31mSortie de ---> "$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n"EOFICI

Exécuter le script Shell pour supprimer le Cronjob

Pour supprimer les Cronjobs, exécutez le script shell. Il listera tous les Cronjob disponibles sur votre instance Ubuntu 18.04 EC2. Vous pouvez ensuite sélectionner le travail à supprimer, le script effectuera la suppression pour vous.

./remove-cronjob.sh -K ~/Downloads/howtoforge-test.pem -U ubuntu -I ec2-15-236-64-128.eu-west-3.compute.amazonaws.com -l yes 

Maintenant, vous pouvez exécuter à nouveau le même script pour répertorier le Cronjob dans l'instance EC2.

./remove-cronjob.sh -K ~/Downloads/howtoforge-test.pem -U ubuntu -I ec2-15-236-64-128.eu-west-3.compute.amazonaws.com -l yes 

Vous pouvez également vérifier le Cronjob à partir de l'instance EC2 elle-même.

ssh -i ~/Downloads/howtoforge-test.pem [email protected]
sudo -i
crontab -l

Conclusion

Dans cet article, nous avons vu des scripts Shell pour ajouter et supprimer des Cronjobs de l'instance Ubuntu EC2. Cela aidera à automatiser la tâche manuelle d'ajout ou de suppression de Cronjobs et évitera également les erreurs humaines potentielles pouvant survenir en raison d'opérations manuelles.


Linux
  1. Comment ajouter ou supprimer un utilisateur d'un groupe sous Linux

  2. Comment installer MongoDB à partir de la source (et en utilisant YUM) sous Linux

  3. Comment extraire les adresses IP des fichiers à l'aide d'une expression régulière dans un shell Linux ?

  4. Comment vérifier si un groupe existe et ajouter s'il n'existe pas dans Linux Shell Script

  5. Comment supprimer une chaîne d'un fichier via des scripts shell ?

Comment créer un utilisateur sur une instance Linux EC2 sur AWS et y ajouter une clé publique à l'aide d'un script shell

Comment supprimer des programmes installés à partir de la source à l'aide de GNU Stow sous Linux

Comment supprimer une commande de l'historique sous Linux

Comment supprimer les caractères (^M) d'un fichier sous Linux

Comment surveiller le serveur Linux et les métriques à partir du navigateur à l'aide de Scout Realtime

Comment installer et utiliser Nu Shell sous Linux