GNU/Linux >> Znalost Linux >  >> Linux

Jak přidat a odebrat Cronjobs z instancí Linux EC2 na AWS pomocí skriptů prostředí

Ruční operace vedou k lidským chybám. Časté přidávání a odebírání Cronjobů může být velmi časově náročný úkol. V tomto článku vytvoříme skripty Shell, které automatizují přidávání a odstraňování Cronjobů z instancí Ubuntu EC2 na AWS. K provedení těchto operací budete potřebovat přístup k instanci EC2. Uživatel, kterého budete používat, musí mít sudo přístup, aby se mohl přepnout na root a provádět přidávání a mazání Cronjobů.

Začněme.

Předpoklady

  1. Základní porozumění skriptům Shell a Cronjobům.
  2. Účet AWS (vytvořte, pokud jej nemáte).
  3. Instance EC2 s uživatelem, který má přístup sudo (Kliknutím sem se dozvíte, jak vytvořit instanci EC2, pokud žádnou nemáte nebo pokud se chcete naučit)

Co uděláme

  1. Vytvořte shell skript pro přidání Cronjobů.
  2. Spusťte skript Shell a přidejte Cronjob.
  3. Vytvořte skript shellu k odstranění Cronjobů.
  4. Spusťte skript Shell a odeberte Cronjob.

Vytvořte skript shellu pro přidání Cronjobů

Vytvořte soubor v místním systému Linux a přidejte do něj následující kód. Kód můžete také najít v mém repozitáři Github na následujícím odkazu.

Odkaz na Github: https://github.com/shivalkarrahul/DevOps/blob/master/aws/shell-scripts/aws-ec2-add-remove-cron-job/add-cronjob.sh
Soubor: add-cronjob.sh
#!/bin/bashhelpFunction(){ echo "" printf "\033[1;32mUsage:$0 -K  -U  -I 
 -a " echo "" echo -e "\t-K \".pem klíč serveru, na který je třeba přidat úlohu cron\"" echo -e "\t-U Uživatelské jméno serveru, na kterém úloha cron musí být přidána" echo -e "\t-I IP serveru, na který je třeba přidat úlohu cron" echo -e "\t-a Název cron, který má být přidán (ve dvojitých uvozovkách)" echo "Přidat nový Cron Job" echo "např." 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" #reset color exit 1 # Ukončit skript po vytištění nápovědy}při getopts "I:K:U:a:" optdo case " $opt" v K ) internalServerPemKey="$OPTARG";; U ) internalServerUser="$OPTARG";; I ) internalServerIP="$OPTARG";; a ) addCron="$OPTARG";; ? ) helpFunction;; # Tisk funkce nápovědy v případě, že parametr neexistuje esacdoneecho "******************"#echo $listCronJobs# Funkce tisku nápovědy v případě, že parametry jsou prázdnéif [ -z "$internalServerIP" ] || [ -z "$internalServerPemKey" ] || [ -z "$internalServerUser" ] || [ -z "$addCron" ]potom printf "\033[1;31m" echo "Některé nebo všechny parametry jsou prázdné"; helpFunctionfi# Spusťte skript v případě, že jsou všechny parametry správnéprintf "\033[1;33m--------------------------------- ---------------------------------Před ssh"echo -e "\033[0m" #reset colorecho ". pem klíč serveru, na kterém byl vytvořen nový uživatel:$internalServerPemKey"echo "Uživatelské jméno serveru, na kterém byl vytvořen nový uživatel:$internalServerUser"echo "IP serveru, na kterém byl vytvořen nový uživatel:$internalServerIP"echo "Název cronu, který má být přidán:$addCron"printf "\033[1;31mPřihlášení do:"$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n"ssh -i " $internalServerPemKey" "$internalServerUser"@"$internalServerIP" <<> EOF echo "Uživatel přepnut na;" whoami printf "\033[1;33m----------------------------------------- -------------------------Seznam úloh Cron před přidáním" 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--------------------------------------- ---------------------------Aktualizovaný seznam úloh Cron" echo -e "\033[0m" #reset color crontab -l | cat -n printf "\033[1;31mOpuštění z ---> "$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n" #echo "Stávající uživatel ---> $userName"EOFHERE 

Než vytvoříte nový Cronjob, zkontrolujte, zda instance EC2 má nějaké existující Cronjob

Přihlaste se k instanci EC2 a zkontrolujte existující Cronjobs

ssh -i ~/Downloads/howtoforge-test.pem [e-mail chráněný]

Seznam Cronjobů

crontab -l

Spuštěním skriptu Shell přidejte Cronjob

Přejděte na svůj místní počítač se systémem Linux a přidejte Cronjob na instanci Ubuntu 18.04 EC2 pomocí následujícího příkazu. Tím se vytvoří Cronjob, který se bude spouštět každou minutu a zapíše aktuální datum do souboru. Cronjob můžete změnit podle svých požadavků.

./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"

Nyní můžete také přejít do instance EC2 a zkontrolovat, zda byl Cronjob přidán nebo ne.

ssh -i ~/Downloads/howtoforge-test.pem [e-mail chráněný]
sudo -i
crontab -l
cat /tmp/cron_output

Na následujícím snímku obrazovky můžete vidět, že Cronjob byl přidán a spuštěn každou minutu.

Vytvořte skript shellu k odstranění Cronjobs

Nyní, pokud si myslíte, že potřebujete odstranit Cronjob, který jste přidali, můžete to snadno udělat pomocí skriptu shellu dostupného na mém Github.

Vytvořte nový soubor ve svém místním systému pomocí následujícího kódu.

Odkaz na Github: https://github.com/shivalkarrahul/DevOps/blob/master/aws/shell-scripts/aws-ec2-add-remove-cron-job/remove-cronjob.sh
Soubor: remove-cronjob.sh
#!/bin/bashhelpFunction(){ echo "" printf "\033[1;32mUsage:$0 -K  -U  -I 
 -l " echo "" echo -e "\t-K \".pem klíč serveru, na kterém má být úloha cron odstraněna\"" echo -e "\t-U Uživatelské jméno serveru, na kterém má být úloha cron odstraněna být odstraněn" echo -e "\t-I IP serveru, na kterém má být úloha cron odstraněna" echo -e "\t-l Vypsat existující úlohy cron, zadat jako parametr \"yes\". Nejprve získejte seznam a potom zadejte číslo úlohy, kterou je třeba odstranit" echo -e "např. echo "Odebrat novou úlohu 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" #reset color exit 1 # Ukončit skript po vytištění nápovědy}při getopts "I:K:U:l:" optdo case "$ opt" v K ) internalServerPemKey="$OPTARG";; U ) internalServerUser="$OPTARG";; I ) internalServerIP="$OPTARG";; l ) showListOfJobs="$OPTARG";; ? ) helpFunction;; # Tisk funkce nápovědy v případě, že parametr neexistuje esacdoneecho "******************"echo $listCronJobs# Tisk nápovědyFunkce v případě, že parametry jsou prázdnéif [ -z "$internalServerIP" ] || [ -z "$internalServerPemKey" ] || [ -z "$internalServerUser" ] || [ -z "$showListOfJobs" ]potom printf "\033[1;31m" echo "Některé nebo všechny parametry jsou prázdné"; helpFunctionfi# Spusťte skript v případě, že jsou všechny parametry správnéprintf "\033[1;33m--------------------------------- ---------------------------------Před ssh"echo -e "\033[0m" #reset colorecho ". pem klíč serveru, na kterém byl vytvořen nový uživatel:$internalServerPemKey"echo "Uživatelské jméno serveru, na kterém byl vytvořen nový uživatel:$internalServerUser"echo "IP serveru, na kterém byl vytvořen nový uživatel:$internalServerIP"if [ $showListOfJobs =="yes" ]potom printf "\033[1;31mPřihlášení do:"$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n" ssh -i "$internalServerPemKey " "$internalServerUser"@"$internalServerIP" < "$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n"EOFHEREfiecho "Zadejte číslo Cron Job Line, které má být odstraněno"přečíst lineNumberprintf " \033[1;31mPřihlášení do:"$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n"ssh -i "$internalServerPemKey" "$internalServerUser"@"$internalServerIP" <crontab.tmp crontab crontab.tmp &&rm -f crontab.tmp printf "\033[1;33m-------------------- ----------------------------------------------- Aktualizovaný seznam Cron Jobs" echo -e "\033[0m" #reset color crontab -l | cat -n printf "\033[1;31mOpuštění z ---> "$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n"EOFHERE

Spuštěním skriptu Shell odeberete Cronjob

Chcete-li odstranit Cronjobs, spusťte skript shellu. Zobrazí seznam všech Cronjob dostupných ve vaší instanci Ubuntu 18.04 EC2. Poté můžete vybrat úlohu, kterou chcete odstranit, skript odstranění provede za vás.

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

Nyní můžete znovu spustit stejný skript a vypsat Cronjob v instanci EC2.

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

Cronjob můžete také zkontrolovat ze samotné instance EC2.

ssh -i ~/Downloads/howtoforge-test.pem [e-mail chráněný]
sudo -i
crontab -l

Závěr

V tomto článku jsme viděli skripty Shell pro přidávání a odstraňování Cronjobů z instance Ubuntu EC2. To pomůže zautomatizovat ruční úkol přidávání nebo odebírání Cronjobů a také se vyhnout potenciálním lidským chybám, které mohou nastat v důsledku ručních operací.


Linux
  1. Jak nainstalovat MongoDB ze zdroje (a pomocí YUM) na Linuxu

  2. Jak zkontrolovat, zda skupina existuje, a přidat, pokud ne, v Linux Shell Script

  3. Jak odstranit jakýkoli řetězec ze souboru pomocí skriptů shellu?

  1. Jak přidat nebo odebrat uživatele ze skupiny v Linuxu

  2. Jak najít a odstranit duplicitní/nechtěné soubory v Linuxu pomocí nástroje „FSlint“.

  3. Jak extrahujete IP adresy ze souborů pomocí regulárního výrazu v linuxovém prostředí?

  1. Jak spouštět příkazy ze standardního vstupu pomocí Tee a Xargs v Linuxu

  2. Jak vytvořit a přidat svazek EBS v instanci AWS (EC2)

  3. Jak přidat a odstranit statickou trasu v Linuxu pomocí příkazu IP