Manuale di operazioni di portare a errori umani. Aggiunta e rimozione di Cronjobs spesso può essere un dispendio di tempo. In questo articolo, andremo a creare gli script di Shell per automatizzare l’aggiunta e la cancellazione di Cronjobs da Ubuntu istanze EC2 su AWS. Per eseguire queste operazioni è necessario accedere all’istanza EC2. L’utente è bisogno di avere accesso con sudo in modo che l’utente può passare a root ed eseguire aggiunta e la cancellazione di Cronjobs.
Let’s get started.
Pre-requisiti
- Conoscenza di base di script di Shell e Cronjobs.
- AWS Account (Creare , se non avete uno).
- Istanza EC2 con l’utente di avere accesso con sudo (Clicca qui per saperne di creare un’istanza EC2 se non ne avete uno, o se si vuole imparare )
Che cosa faremo
- Creare uno script di shell per aggiungere Cronjobs.
- Eseguire lo script di Shell per aggiungere un Cronjob.
- Creare uno script di shell per rimuovere Cronjobs.
- Eseguire lo script di Shell per rimuovere il Cronjob.
Creare uno script di shell per aggiungere Cronjobs
Creare un file sul tuo Sistema Linux e aggiungere il codice riportato di seguito. È inoltre possibile trovare il codice sul mio Github repo sul seguente link.
Github Link: https://github.com/shivalkarrahul/DevOps/blob/master/aws/shell-scripts/aws-ec2-add-remove-cron-job/add-cronjob.sh
File: add-cronjob.sh
#!/bin/bash helpFunction() { echo "" printf "\033[1;32mUsage: $0 -K <interne.pem> -U <interne-utente> -I <interne-ip> -a <cron-per-essere-aggiunto>" echo "" echo-e "\t-K \".pem chiave del server in cui un job di cron deve essere aggiunto\"" echo-e "\t-U nome utente del server in cui un job di cron deve essere aggiunto" echo-e "\t-I IP del server in cui un job di cron deve essere aggiunto" echo-e "\t-a Nome del cron per essere aggiunto (tra virgolette)" echo "Aggiungi un nuovo Job di Cron" echo "ad esempio" echo "./add-cronjob.sh -K /Users/cloudcover/Documenti/Rahul/accesso/rahuls.pem -U ubuntu -mi ec2-35-180-234-158.eu-west-3.compute.amazonaws.com -un \"0 5 * * 1 testCronJob\"" echo-e "\033[0m" #ripristina i colori exit 1 # Esci dallo script dopo la stampa } mentre getopts "io:K:U:a:" opt fare case "$opt" in K ) internalServerPemKey="$OPTARG" ;; U ) internalServerUser="$OPTARG" ;; I ) internalServerIP="$OPTARG" ;; a ) addCron="$OPTARG" ;; ? ) helpFunction ;; # Stampa helpFunction nel caso in cui il parametro è inesistente esac fatto echo "******************" #echo $listCronJobs # Stampa helpFunction nel caso in cui i parametri sono vuote if [ -z "$internalServerIP" ] || [ -z "$internalServerPemKey" ] || [ -z "$internalServerUser" ] || [ -z "$addCron" ] quindi printf "\033[1;31m" echo "Alcuni o tutti i parametri sono vuote"; helpFunction fi # Inizio dello script nel caso in cui tutti i parametri sono corretti printf "\033[1;33m------------------------------------------------------------------Prima di ssh" echo-e "\033[0m" #ripristina i colori echo ".pem chiave del server in cui un nuovo utente che ha creato : $internalServerPemKey" echo "nome utente del server in cui un nuovo utente che ha creato : $internalServerUser" echo "l'IP del server in cui un nuovo utente che ha creato : $internalServerIP" echo "Nome del cron per essere aggiunto : $addCron" printf "\033[1;31mLogging in: "$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n" ssh -i "$internalServerPemKey" "$internalServerUser"@"$internalServerIP" << QUI printf "\033[1;33m------------------------------------------------------------------Dopo ssh" echo-e "\033[0m" #ripristina i colori #echo "Esecuzione connect_prod_cron_new.sh" #sh connect_prod_cron_new.sh #sonno 2 echo "dopo ssh" echo "l'IP Del Server:" hostname-mi echo "il nome host del Server:" hostname echo "Modifica utente root" sudo su <><> EOF echo "Utente Commutato;" whoami printf "\033[1;33m------------------------------------------------------------------Elenco di Cron Jobs Prima dell'Aggiunta" echo-e "\033[0m" #ripristina i colori crontab -l | cat-n if [ -n "$addCron" ] quindi echo "all'Interno addCron" crontab -l >crontab.tmp printf "%s\n " "$addCron" >>crontab.tmp crontab crontab.tmp && rm -f crontab.tmp fi printf "\033[1;33m------------------------------------------------------------------Elenco Aggiornato di Cron Jobs" echo-e "\033[0m" #ripristina i colori crontab -l | cat-n printf "\033[1;31mExiting da ---> "$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n" #echo "utente Esistente ---> $userName" EOF QUI
Prima di creare un nuovo Cronjob, controllare se l’istanza EC2 esistenti Cronjobs
Login per l’istanza EC2 e di controllo esistenti Cronjobs
ssh -i ~/Downloads/howtoforge-test.pem ubuntu@ec2-15-236-64-128.eu-west-3.compute.amazonaws.com
Elenco i Cronjobs
crontab -l
Eseguire lo script di Shell per aggiungere un Cronjob
Vai al tuo locale macchina Linux e aggiungere un Cronjob su Ubuntu 18.04 istanza EC2 utilizzando il comando riportato di seguito. Questo creerà un Cronjob che sarà attivato ogni minuto e scrivere la data corrente in un file. È possibile modificare il Cronjob secondo il vostro requisito.
./add-cronjob.sh -K ~/Downloads/howtoforge-test.pem -U ubuntu -mi ec2-15-236-64-128.eu-west-3.compute.amazonaws.com -un "* * * * * /bin/date >> /tmp/cron_output"
Ora, si può anche andare per l’istanza EC2 per verificare se il Cronjob è stato aggiunto o meno.
ssh -i ~/Downloads/howtoforge-test.pem ubuntu@ec2-15-236-64-128.eu-west-3.compute.amazonaws.com
sudo-i
crontab -l
cat /tmp/cron_output
Nella schermata riportata di seguito, si può vedere che il Cronjob è stato aggiunto ed eseguito ogni minuto.
Creare uno script di shell per rimuovere Cronjobs
Ora, se si pensa che è necessario rimuovere il Cronjob aggiunto, si può facilmente farlo utilizzando lo script di shell disponibili sul mio Github.
Creare un nuovo file sul vostro sistema locale con il codice riportato di seguito.
Github Link: https://github.com/shivalkarrahul/DevOps/blob/master/aws/shell-scripts/aws-ec2-add-remove-cron-job/remove-cronjob.sh
File: remove-cronjob.sh
#!/bin/bash helpFunction() { echo "" printf "\033[1;32mUsage: $0 -K <interne.pem> -U <interne-utente> -I <interne-ip> -l <yes/no>" echo "" echo-e "\t-K \".pem chiave del server in cui un job di cron deve essere rimosso\"" echo-e "\t-U nome utente del server in cui un job di cron deve essere rimosso" echo-e "\t-I IP del server in cui un job di cron deve essere rimosso" echo-e "\t-l Elenco esistente Cron Jobs, forniscono \"sì\" come parametro. Ottenere un elenco di prima e poi specificare di lavoro che deve essere rimosso" echo-e ", per esempio" echo "Rimuovere un nuovo Job di Cron" echo "./remove-cronjob.sh -K /Users/cloudcover/Documenti/Rahul/accesso/rahuls.pem -U ubuntu -mi ec2-52-47-90-247.eu-west-3.compute.amazonaws.com -l sì" echo-e "\033[0m" #ripristina i colori exit 1 # Esci dallo script dopo la stampa } mentre getopts "io:K:U:l:" opt fare case "$opt" in K ) internalServerPemKey="$OPTARG" ;; U ) internalServerUser="$OPTARG" ;; I ) internalServerIP="$OPTARG" ;; l ) showListOfJobs="$OPTARG" ;; ? ) helpFunction ;; # Stampa helpFunction nel caso in cui il parametro è inesistente esac fatto echo "******************" echo $listCronJobs # Stampa helpFunction nel caso in cui i parametri sono vuote if [ -z "$internalServerIP" ] || [ -z "$internalServerPemKey" ] || [ -z "$internalServerUser" ] || [ -z "$showListOfJobs" ] quindi printf "\033[1;31m" echo "Alcuni o tutti i parametri sono vuote"; helpFunction fi # Inizio dello script nel caso in cui tutti i parametri sono corretti printf "\033[1;33m------------------------------------------------------------------Prima di ssh" echo-e "\033[0m" #ripristina i colori echo ".pem chiave del server in cui un nuovo utente che ha creato : $internalServerPemKey" echo "nome utente del server in cui un nuovo utente che ha creato : $internalServerUser" echo "l'IP del server in cui un nuovo utente che ha creato : $internalServerIP" if [ $showListOfJobs == "yes" ] quindi printf "\033[1;31mLogging in: "$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n" ssh -i "$internalServerPemKey" "$internalServerUser"@"$internalServerIP" << QUI printf "\033[1;33m------------------------------------------------------------------Dopo ssh" echo-e "\033[0m" #ripristina i colori echo "dopo ssh" hostname-mi hostname echo "Modifica utente root" sudo su << EOF echo "Utente Commutato;" whoami printf "\033[1;33m------------------------------------------------------------------Elenco di Cron Jobs Prima della sua Eliminazione" echo-e "\033[0m" #ripristina i colori crontab -l | cat-n printf "\033[1;31mExiting da ---> "$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n" EOF QUI fi echo "Inserisci il Cron Job Numero di Riga per essere rimosso" leggi lineNumber printf "\033[1;31mLogging in: "$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n" ssh -i "$internalServerPemKey" "$internalServerUser"@"$internalServerIP" << QUI printf "\033[1;33m------------------------------------------------------------------Dopo ssh" echo-e "\033[0m" #ripristina i colori echo "dopo ssh" hostname-mi hostname #sonno 2 echo "Modifica utente root" sudo su << EOF echo "Utente Commutato;" whoami printf "\033[1;33m------------------------------------------------------------------Elenco di Cron Jobs Prima della sua Eliminazione" echo-e "\033[0m" #ripristina i colori crontab -l | cat-n crontab -l | sed-e "$numero"d >crontab.tmp crontab crontab.tmp && rm -f crontab.tmp printf "\033[1;33m------------------------------------------------------------------Elenco Aggiornato di Cron Jobs" echo-e "\033[0m" #ripristina i colori crontab -l | cat-n printf "\033[1;31mExiting da ---> "$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n" EOF QUI
Eseguire lo script di Shell per rimuovere il Cronjob
Per rimuovere i Cronjobs, eseguire lo script di shell. Vi elenco tutti i Cronjob disponibili sul vostro Ubuntu 18.04 istanza EC2. È quindi possibile selezionare il lavoro che deve essere eliminato, la script eseguirà l’eliminazione per voi.
./remove-cronjob.sh -K ~/Downloads/howtoforge-test.pem -U ubuntu -mi ec2-15-236-64-128.eu-west-3.compute.amazonaws.com -l sì
Ora, è possibile eseguire lo stesso script per elencare i Cronjob nell’istanza EC2.
./remove-cronjob.sh -K ~/Downloads/howtoforge-test.pem -U ubuntu -mi ec2-15-236-64-128.eu-west-3.compute.amazonaws.com -l sì
È inoltre possibile controllare il Cronjob dall’istanza EC2 stesso.
ssh -i ~/Downloads/howtoforge-test.pem ubuntu@ec2-15-236-64-128.eu-west-3.compute.amazonaws.com
sudo-i
crontab -l
Conclusione
In questo articolo, abbiamo visto gli script di Shell per aggiungere e rimuovere i Cronjobs da Ubuntu istanza EC2. Questo aiuterà ad automatizzare l’operazione manuale di aggiungere o rimuovere i Cronjobs e anche di evitare potenziali errori umani che possono venire a causa di operazioni manuali.