GNU/Linux >> Belajar Linux >  >> Linux

Cara menambah dan menghapus Cronjobs dari instans Linux EC2 di AWS menggunakan skrip shell

Operasi manual menyebabkan kesalahan manusia. Menambah dan menghapus Cronjobs sering bisa menjadi tugas yang sangat memakan waktu. Pada artikel ini, kami akan membuat skrip Shell yang mengotomatiskan penambahan dan penghapusan Cronjobs dari instans Ubuntu EC2 di AWS. Untuk melakukan operasi ini, Anda memerlukan akses ke instans EC2. Pengguna yang akan Anda gunakan harus memiliki akses sudo sehingga pengguna dapat beralih ke root dan melakukan penambahan dan penghapusan Cronjobs.

Mari kita mulai.

Prasyarat

  1. Pemahaman dasar tentang skrip Shell dan Cronjobs.
  2. Akun AWS (Buat jika Anda belum memilikinya).
  3. Instans EC2 dengan pengguna yang memiliki akses sudo (Klik di sini untuk mempelajari cara membuat instans EC2 jika Anda tidak memilikinya atau jika Anda ingin mempelajarinya )

Apa yang akan kita lakukan

  1. Buat skrip shell untuk menambahkan Cronjobs.
  2. Jalankan skrip Shell untuk menambahkan Cronjob.
  3. Buat skrip shell untuk menghapus Cronjobs.
  4. Jalankan skrip Shell untuk menghapus Cronjob.

Buat skrip shell untuk menambahkan Cronjobs

Buat file di Sistem Linux lokal Anda dan tambahkan kode berikut ke dalamnya. Anda juga dapat menemukan kode di repo Github saya di tautan berikut.

Tautan Github: https://github.com/shivalkarrahul/DevOps/blob/master/aws/shell-scripts/aws-ec2-add-remove-cron-job/add-cronjob.sh
File: add-cronjob.sh
#!/bin/bashhelpFunction(){ echo "" printf "\033[1;32mUsage:$0 -K  -U  -I 
 -a " echo "" echo -e "\t-K \".pem kunci server tempat tugas cron harus ditambahkan\"" echo -e "\t-U Nama Pengguna server tempat a tugas cron harus ditambahkan" echo -e "\t-I IP server tempat tugas cron harus ditambahkan" echo -e "\t-a Nama cron yang akan ditambahkan (dalam tanda kutip ganda)" echo "Tambahkan a Cron Job baru" echo "mis." 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 warna keluar 1 # Keluar skrip setelah mencetak bantuan}sementara getopts "I:K:U:a:" optdo case " $opt" di K ) internalServerPemKey="$OPTARG";; U ) internalServerUser="$OPTARG";; saya ) internalServerIP="$OPTARG";; a) addCron="$OPTARG";; ? ) fungsi bantuan;; # Cetak bantuanFungsi jika parameter tidak ada esacdoneecho "******************"#echo $listCronJobs# Cetak bantuanFungsi jika parameter kosong jika [ -z "$internalServerIP" ] || [ -z "$internalServerPemKey" ] || [ -z "$internalServerUser" ] || [ -z "$addCron" ]lalu printf "\033[1;31m" echo "Beberapa atau semua parameter kosong"; helpFunctionfi# Mulai skrip jika semua parameter benarprintf "\033[1;33m--------------------------------- ---------------------------------Sebelum ssh"echo -e "\033[0m" #reset colorecho ". pem kunci dari server tempat pengguna baru dibuat :$internalServerPemKey"echo "Nama Pengguna server tempat pengguna baru dibuat :$internalServerUser"echo "IP server tempat pengguna baru dibuat :$internalServerIP"echo "Nama cron yang akan ditambahkan :$addCron"printf "\033[1;31mLogin ke:"$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n"ssh -i " $internalServerPemKey" "$internalServerUser"@"$internalServerIP" <<> EOF echo "Pengguna Beralih Ke;" whoami printf "\033[1;33m---------------------------------------------------- -------------------------Daftar Pekerjaan Cron Sebelum Penambahan" echo -e "\033[0m" #reset warna crontab -l | cat -n if [ -n "$addCron" ] lalu echo "Di dalam addCron" crontab -l>crontab.tmp printf '%s\n' "$addCron">>crontab.tmp crontab crontab.tmp &&rm -f crontab .tmp fi printf "\033[1;33m--------------------------------------- --------------------------- Daftar Pekerjaan Cron yang Diperbarui" echo -e "\033[0m" #reset warna crontab -l | cat -n printf "\033[1;31mKeluar dari ---> "$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n" #echo "Pengguna yang ada ---> $userName"EOFHERE 

Sebelum Anda membuat Cronjob baru, periksa apakah instans EC2 memiliki Cronjobs yang sudah ada

Masuk ke instans EC2 dan periksa Cronjobs yang ada

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

Cantumkan Cronjobs

crontab -l

Jalankan skrip Shell untuk menambahkan Cronjob

Buka mesin Linux lokal Anda dan tambahkan Cronjob pada instance Ubuntu 18.04 EC2 menggunakan perintah berikut. Ini akan membuat Cronjob yang akan dipicu setiap menit dan menulis tanggal saat ini ke file. Anda dapat mengubah Cronjob sesuai kebutuhan Anda.

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

Sekarang, Anda juga dapat membuka instans EC2 untuk memeriksa apakah Cronjob telah ditambahkan atau belum.

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

Pada tangkapan layar berikut, Anda dapat melihat bahwa Cronjob telah ditambahkan dan dijalankan setiap menit.

Buat skrip shell untuk menghapus Cronjobs

Sekarang, jika Anda merasa perlu menghapus Cronjob yang Anda tambahkan, Anda dapat dengan mudah melakukannya menggunakan skrip shell yang tersedia di Github saya.

Buat file baru di sistem lokal Anda dengan kode berikut.

Link Github: https://github.com/shivalkarrahul/DevOps/blob/master/aws/shell-scripts/aws-ec2-add-remove-cron-job/remove-cronjob.sh
File: remove-cronjob.sh
#!/bin/bashhelpFunction(){ echo "" printf "\033[1;32mUsage:$0 -K  -U  -I 
 -l " echo "" echo -e "\t-K \".pem kunci server tempat tugas cron harus dihapus\"" echo -e "\t-U Nama Pengguna server tempat tugas cron harus dihapus" echo -e "\t-I IP server tempat tugas cron harus dihapus" echo -e "\t-l Daftar Pekerjaan Cron yang ada, berikan \"ya\" sebagai parameter. Dapatkan daftar terlebih dahulu dan lalu tentukan no pekerjaan yang perlu dihapus" echo -e "e.g." echo "Hapus Pekerjaan Cron baru" 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 # Exit script after printing help}sementara getopts "I:K:U:l:" optdo case "$ opt" di K ) internalServerPemKey="$OPTARG";; U ) internalServerUser="$OPTARG";; saya ) internalServerIP="$OPTARG";; l ) showListOfJobs="$OPTARG";; ? ) fungsi bantuan;; # Cetak helpFunction jika parameter tidak ada esacdoneecho "******************"echo $listCronJobs# Print helpFunction jika parameter kosong jika [ -z "$internalServerIP" ] || [ -z "$internalServerPemKey" ] || [ -z "$internalServerUser" ] || [ -z "$showListOfJobs" ]lalu printf "\033[1;31m" echo "Beberapa atau semua parameter kosong"; helpFunctionfi# Mulai skrip jika semua parameter benarprintf "\033[1;33m--------------------------------- ---------------------------------Sebelum ssh"echo -e "\033[0m" #reset colorecho ". pem kunci dari server tempat pengguna baru dibuat :$internalServerPemKey"echo "Nama Pengguna server tempat pengguna baru dibuat :$internalServerUser"echo "IP server tempat pengguna baru dibuat :$internalServerIP"jika [ $showListOfJobs =="yes" ]lalu printf "\033[1;31mLogin ke:"$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n" ssh -i "$internalServerPemKey " "$internalServerUser"@"$internalServerIP" < "$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n"EOFHEREfiecho "Masukkan Nomor Baris Pekerjaan Cron yang akan dihapus"baca lineNumberprintf " \033[1;31mMasuk ke:"$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n"ssh -i "$internalServerPemKey" "$internalServerUser"@"$internalServerIP" <crontab.tmp crontab crontab.tmp &&rm -f crontab.tmp printf "\033[1;33m------------------- ---------------------------------------------------------- Daftar Terbaru Pekerjaan Cron" echo -e "\033[0m" #reset warna crontab -l | cat -n printf "\033[1;31mKeluar dari ---> "$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n"EOFHERE

Jalankan skrip Shell untuk menghapus Cronjob

Untuk menghapus Cronjobs, jalankan skrip shell. Ini akan mencantumkan semua Cronjob yang tersedia di instance Ubuntu 18.04 EC2 Anda. Anda kemudian dapat memilih pekerjaan yang akan dihapus, skrip akan melakukan penghapusan untuk Anda.

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

Sekarang, Anda dapat menjalankan skrip yang sama lagi untuk membuat daftar Cronjob di instans 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 

Anda juga dapat memeriksa Cronjob dari instans EC2 itu sendiri.

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

Kesimpulan

Pada artikel ini, kami melihat skrip Shell untuk menambah dan menghapus Cronjobs dari instance Ubuntu EC2. Ini akan membantu mengotomatiskan tugas manual untuk menambah atau menghapus Cronjobs dan juga menghindari potensi kesalahan manusia yang dapat terjadi karena operasi manual.


Linux
  1. Cara Menambah atau Menghapus Pengguna dari Grup di Linux

  2. Bagaimana Anda mengekstrak alamat IP dari file menggunakan regex di shell linux?

  3. Cara memeriksa apakah grup ada dan menambahkan jika tidak ada di Linux Shell Script

  1. Cara Menemukan dan Menghapus File Duplikat/Tidak Diinginkan di Linux Menggunakan Alat 'FSlint'

  2. Cara Menginstal MongoDB dari Sumber (dan menggunakan YUM) di Linux

  3. Bagaimana cara menghapus string apa pun dari file melalui skrip Shell?

  1. Cara Menjalankan Perintah dari Input Standar Menggunakan Tee dan Xargs di Linux

  2. Cara Membuat dan Menambahkan Volume EBS di AWS Instance (EC2)

  3. Cara Menambah dan Menghapus Rute Statis di Linux menggunakan Perintah IP