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
- Základní porozumění skriptům Shell a Cronjobům.
- Účet AWS (vytvořte, pokud jej nemáte).
- 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
- Vytvořte shell skript pro přidání Cronjobů.
- Spusťte skript Shell a přidejte Cronjob.
- Vytvořte skript shellu k odstranění Cronjobů.
- 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 -lSpuš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 -icrontab -lcat /tmp/cron_outputNa 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.shSoubor: 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 -icrontab -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í.
Jak kopírovat položky z jedné DynamoDB do jiné tabulky DynamoDB pomocí Pythonu na AWS Jak zobrazit dialogová okna GUI v bash skriptu pomocí ZenityLinux