Cách thêm và xóa Cronjob khỏi các phiên bản Linux EC2 trên AWS bằng cách sử dụng tập lệnh shell

theanh

Administrator
Nhân viên
Các thao tác thủ công dẫn đến lỗi của con người. Việc thêm và xóa Cronjob thường xuyên có thể là một nhiệm vụ rất tốn thời gian. Trong bài viết này, chúng tôi sẽ tạo các tập lệnh Shell tự động thêm và xóa Cronjob khỏi các phiên bản Ubuntu EC2 trên AWS. Để thực hiện các thao tác này, bạn sẽ cần quyền truy cập vào phiên bản EC2. Người dùng bạn sẽ sử dụng cần có quyền truy cập sudo để người dùng có thể chuyển sang root và thực hiện thêm và xóa Cronjob.

Chúng ta hãy bắt đầu.

Điều kiện tiên quyết​

  1. Hiểu biết cơ bản về tập lệnh Shell và Cronjob.
  2. Tài khoản AWS (Tạonếu bạn chưa có).
  3. Thể hiện EC2 với người dùng có quyền truy cập sudo (Nhấp vào đây để tìm hiểu cách tạo thể hiện EC2 nếu bạn chưa có hoặc nếu bạn muốn tìm hiểu)

Chúng ta sẽ làm gì​

  1. Tạo một tập lệnh shell để thêm Cronjob.
  2. Thực thi tập lệnh Shell để thêm Cronjob.
  3. Tạo một tập lệnh shell để xóa Cronjob.
  4. Thực thi tập lệnh Shell để xóa Cronjob.

Tạo một shellscript để thêm Cronjob​

Tạo một tệp trên Hệ thống Linux cục bộ của bạn và thêm mã sau vào đó. Bạn cũng có thể tìm thấy mã trên kho lưu trữ Github của tôi theo liên kết sau.
Mã:
Liên kết Github:[URL=https://github.com/shivalkarrahul/DevOps/blob/master/aws/shell-scripts/aws-ec2-add-remove-cron-job/add-cronjob.sh?utm_source=diendancongnghe.com]https://github.com/shivalkarrahul/DevOps/blob/master/aws/shell-scripts/aws-ec2-add-remove-cron-job/add-cronjob.sh[/URL]
Mã:
File:add-cronjob.sh
Mã:
#!/bin/bashhelpFunction(){ echo "" printf "\033[1;32mUsage: $0 -K  -U  -I  -a " echo "" echo -e "\t-K \".pem khóa của máy chủ mà công việc cron phải được thêm vào\"" echo -e "\t-U Tên người dùng của máy chủ mà công việc cron phải được thêm vào" echo -e "\t-I IP của máy chủ mà công việc cron phải được thêm vào" echo -e "\t-a Tên của cron cần được thêm vào (trong dấu ngoặc kép)" echo "Thêm một công việc cron mới" echo "ví dụ" 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 # Thoát khỏi tập lệnh sau khi in trợ giúp}trong khi getopts "I:K:U:a:" optdo case "$opt" in K ) internalServerPemKey="$OPTARG" ;; U ) internalServerUser="$OPTARG" ;; I ) internalServerIP="$OPTARG" ;; a ) addCron="$OPTARG" ;; ? ) helpFunction ;; # In helpFunction trong trường hợp tham số không tồn tại esacdoneecho "******************"#echo $listCronJobs# In helpFunction trong trường hợp tham số trốngif [ -z "$internalServerIP" ] || [ -z "$internalServerPemKey" ] || [ -z "$internalServerUser" ] || [ -z "$addCron" ]then printf "\033[1;31m" echo "Một số hoặc tất cả các tham số đều trống"; helpFunctionfi# Bắt đầu tập lệnh trong trường hợp tất cả các tham số đều đúngprintf "\033[1;33m------------------------------------------------------------------Trước ssh"echo -e "\033[0m" #reset colorecho ".pem key của máy chủ mà người dùng mới đã được tạo: $internalServerPemKey"echo "UserName của máy chủ mà người dùng mới đã được tạo: $internalServerUser"echo "IP của máy chủ mà người dùng mới đã được tạo: $internalServerIP"echo "Tên của cron sẽ được thêm: $addCron"printf "\033[1;31mĐăng nhập vào: "$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n"ssh -i "$internalServerPemKey" "$internalServerUser"@"$internalServerIP" crontab.tmp printf '%s\n' "$addCron" >>crontab.tmp crontab crontab.tmp && rm -f crontab.tmp fi printf "\033[1;33m--------------------------------------------------------------------------------Danh sách công việc Cron được cập nhật" echo -e "\033[0m" #reset color crontab -l | cat -n printf "\033[1;31mThoát khỏi ---> "$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n" #echo "Người dùng hiện tại ---> $userName"EOFHERE
Trước khi bạn tạo một Cronjob mới, hãy kiểm tra xem phiên bản EC2 có bất kỳ Cronjob nào hiện có không

Đăng nhập vào phiên bản EC2 và kiểm tra các Cronjob hiện có
Mã:
ssh -i ~/Downloads/howtoforge-test.pem[emailprotected]
Liệt kê các Cronjob
Mã:
crontab -l

Thực thi tập lệnh Shell để thêm một Cronjob​

Truy cập vào máy Linux cục bộ của bạn và thêm một Cronjob trên phiên bản EC2 Ubuntu 18.04 bằng lệnh sau. Lệnh này sẽ tạo một Cronjob được kích hoạt mỗi phút và ghi ngày hiện tại vào một tệp. Bạn có thể thay đổi Cronjob theo yêu cầu của mình.
Mã:
./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"


Bây giờ, bạn cũng có thể đến phiên bản EC2 để kiểm tra xem Cronjob đã được thêm hay chưa.
Mã:
ssh -i ~/Downloads/howtoforge-test.pem [emailprotected]
Mã:
sudo -i
Mã:
crontab -l
Mã:
cat /tmp/cron_output
Trong ảnh chụp màn hình sau, bạn có thể thấy Cronjob đã được thêm vào và thực thi mỗi phút.


Tạo shellscript để xóa Cronjob​

Bây giờ, nếu bạn nghĩ rằng mình cần xóa Cronjob đã thêm, bạn có thể dễ dàng thực hiện bằng cách sử dụng tập lệnh shell có sẵn trên Github của tôi.

Tạo một tệp mới trên hệ thống cục bộ của bạn bằng mã sau.
Mã:
Liên kết Github:[URL=https://github.com/shivalkarrahul/DevOps/blob/master/aws/shell-scripts/aws-ec2-add-remove-cron-job/remove-cronjob.sh?utm_source=diendancongnghe.com]https://github.com/shivalkarrahul/DevOps/blob/master/aws/shell-scripts/aws-ec2-add-remove-cron-job/remove-cronjob.sh[/URL]
Mã:
Tệp:remove-cronjob.sh
Mã:
#!/bin/bashhelpFunction(){ echo "" printf "\033[1;32mUsage: $0 -K  -U  -I  -l " echo "" echo -e "\t-K \".pem khóa của máy chủ mà công việc cron phải được xóa\"" echo -e "\t-U Tên người dùng của máy chủ mà công việc cron phải được xóa" echo -e "\t-I IP của máy chủ mà công việc cron phải được xóa" echo -e "\t-l Liệt kê các Công việc Cron hiện có, cung cấp \"yes\" làm tham số. Trước tiên, hãy lấy danh sách rồi chỉ định số công việc cần xóa" echo -e "ví dụ" echo "Xóa một Cron Job mới" 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 # Thoát khỏi tập lệnh sau khi in trợ giúp}while getopts "I:K:U:l:" optdo case "$opt" in K ) internalServerPemKey="$OPTARG" ;; U ) internalServerUser="$OPTARG" ;; I ) internalServerIP="$OPTARG" ;; l ) showListOfJobs="$OPTARG" ;; ? ) helpFunction ;; # In helpFunction trong trường hợp tham số không tồn tại esacdoneecho "******************"echo $listCronJobs# In helpFunction trong trường hợp tham số trốngif [ -z "$internalServerIP" ] || [ -z "$internalServerPemKey" ] || [ -z "$internalServerUser" ] || [ -z "$showListOfJobs" ]then printf "\033[1;31m" echo "Một số hoặc tất cả các tham số đều trống"; helpFunctionfi# Bắt đầu tập lệnh trong trường hợp tất cả các tham số đều đúngprintf "\033[1;33m------------------------------------------------------------------Trước ssh"echo -e "\033[0m" #đặt lại màuecho ".pem key của máy chủ mà người dùng mới đã được tạo: $internalServerPemKey"echo "UserName của máy chủ mà người dùng mới đã được tạo: $internalServerUser"echo "IP của máy chủ mà người dùng mới đã được tạo: $internalServerIP"if [ $showListOfJobs == "yes" ]then printf "\033[1;31mĐăng nhập vào: "$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n" ssh -i "$internalServerPemKey" "$internalServerUser"@"$internalServerIP"
 
Back
Bên trên