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
- Pemahaman dasar tentang skrip Shell dan Cronjobs.
- Akun AWS (Buat jika Anda belum memilikinya).
- 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
- Buat skrip shell untuk menambahkan Cronjobs.
- Jalankan skrip Shell untuk menambahkan Cronjob.
- Buat skrip shell untuk menghapus Cronjobs.
- 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 -lJalankan 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 -icrontab -lcat /tmp/cron_outputPada 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.shFile: 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 -icrontab -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.
Cara menyalin item dari satu DynamoDB ke tabel DynamoDB lain menggunakan Python di AWS Cara menampilkan dialog GUI dalam skrip bash menggunakan ZenityLinux