Guide Open Source

GUIDE E MANUALI DEL MONDO LINUX E CMS

Guide Open Source

GUIDE E MANUALI DEL MONDO LINUX E CMS

Guide Open Source

GUIDE E MANUALI DEL MONDO LINUX E CMS

Come aggiungere e rimuovere i Cronjobs da Linux istanze EC2 su AWS utilizzando gli script di shell

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

  1. Conoscenza di base di script di Shell e Cronjobs.
  2. AWS Account (Creare , se non avete uno).
  3. 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

  1. Creare uno script di shell per aggiungere Cronjobs.
  2. Eseguire lo script di Shell per aggiungere un Cronjob.
  3. Creare uno script di shell per rimuovere Cronjobs.
  4. 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"

Aggiungi un Cronjob

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.

Controllare il Cronjob

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ì

Rimuovere il Cronjob

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ì

Elenco i Cronjobs utilizzando lo script

È 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

Elenco il Cronjob dall'istanza

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.

Piaciuto l'articolo? Condividilo sui social!

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on whatsapp
WhatsApp