برنامه نویسی پوسته برای تولید مفید است

اسکریپت پوسته یک فایل متنی است که حاوی یک سری دستورات است که توسط یک پوسته یونیکس/لینوکس (مترجم خط فرمان) اجرا می شود. این وظایف تکراری را خودکار می کند ، چندین دستورات را ترکیب می کند و می تواند شامل سازه های برنامه نویسی مانند حلقه ها ، شرط ها و توابع باشد.
ویژگی های اصلی برنامه نویسی پوسته:
- اتوماسیون – دستورات را بدون ورودی دستی اجرا می کند.
- پردازش دسته ای – چندین دستورات را به صورت متوالی اجرا می کند.
- زبان اسکریپت – از متغیرها ، حلقه ها و شرط ها پشتیبانی می کند.
- قابلیت استفاده مجدد – اسکریپت ها را می توان ذخیره و استفاده مجدد کرد.
- سفارشی سازی – می تواند ورودی کاربر را بگیرد و خروجی پویا ایجاد کند.
1. فیلمنامه پشتیبان
mkdir source
touch /source/1.txt /source/2.txt # or cd /source/ && touch 1.txt 2.txt
mkdir destination
#! /bin/bash
SOURCE="/home/ubuntu/source"
DESTINATION="/home/ubuntu/destination"
DATE=$(date +%Y-%m-%d_%H-%M-%S)
#Create backup directory and copy files
mkdir -p $DESTINATION/$DATE
cp -r $SOURCE $DESTINATION/$DATE
echo "Backup completed on $DATE"
*or*
cp -r "$SOURCE" "$DESTINATION/$DATE" && echo "Backup succeeded on $DATE" || echo "Backup failed on $DATE" >&2
sudo chmod +x backup.sh
./backup.sh
توضیح
• منبع: دایرکتوری که باید از آن حمایت شود.
• مقصد: دایرکتوری که نسخه پشتیبان تهیه می شود.
• تاریخ: تاریخ و زمان فعلی را برای ایجاد یک پوشه پشتیبان منحصر به فرد ضبط می کند.
• MKDIR -P $ مقصد/تاریخ $: در صورت عدم وجود فهرست پشتیبان تهیه می کند.
• CP -R $ منبع $ مقصد/$ تاریخ: محتویات فهرست منبع را کپی می کند
به فهرست پشتیبان.
• echo “نسخه پشتیبان تهیه شده در تاریخ $”: پیامی را نشان می دهد که نشان دهنده تکمیل است
از نسخه پشتیبان
برنامه ریزی با کرون
To run the backup script at regular intervals, use crontab -e to edit the crontab file
and add:
* * * * * /path/to/backup_script.sh
This example runs the script every minute. Adjust the schedule as needed.
Remove or Disable the Cron Job
crontab -e
Method 1. Delete the line containing your backup script and save
Method 2. # * * * * * /path/to/backup_script.sh # add # and save
Method 3. crontab -r # Delete your entire crontab
Method 4: Stop the Cron Service
sudo systemctl stop cron # Ubuntu/Debian
sudo systemctl stop crond # CentOS/RHEL
2. اسکریپت بررسی استفاده از دیسک
#!/bin/bash
THRESHOLD=80
# Check disk usage and print a warning if usage is above the threshold
df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' |
while read output;
do
usage=$(echo $output | awk '{ print $1}' | cut -d'%' -f1)
partition=$(echo $output | awk '{ print $2 }')
if [ $usage -ge $THRESHOLD ]; then
echo "Warning: Disk usage on $partition is at ${usage}%"
fi
done
توضیح
• آستانه: آستانه درصد استفاده از دیسک را تنظیم می کند.
• DF -H: استفاده از دیسک را با فرمت قابل خواندن انسانی لیست می کند.
• GREP -VE '^FileSystem | tmpfs | cdrom': خطوط غیر ضروری را فیلتر می کند.
• AWK '{چاپ 5 $ “” $ 1} “: درصد استفاده و نام پارتیشن را استخراج می کند.
• در حالی که خروجی را بخوانید: بیش از هر خط از خروجی فیلتر شده تکرار می شود.
• استفاده = $ (ECHO $ OUTPUT | AWK '{چاپ 1}' | برش -d '٪' -F1): استفاده را استخراج می کند
درصد
• پارتیشن = $ (ECHO $ OUTPUT | AWK '{چاپ 2 $}'): نام پارتیشن را استخراج می کند.
• اگر [ $usage -ge $THRESHOLD ]؛ سپس: بررسی می کند که آیا استفاده بیش از آستانه است یا خیر.
• echo “هشدار: استفاده از دیسک در 𝑝𝑎𝑟𝑡𝑖𝑡𝑖𝑜𝑛𝑖𝑠𝑎𝑡 {استفاده} ٪”: یک پیام هشدار دهنده را چاپ می کند
3. اسکریپت بررسی سلامت خدمات
#!/bin/bash
SERVICE="nginx"
# Check if the service is running, if not, start it
if systemctl is-active --quiet $SERVICE; then
echo "$SERVICE is running"
else
echo "$SERVICE is not running"
systemctl start $SERVICE
fi
توضیح
• سرویس: نام سرویس برای بررسی.
• SystemCtl IS-Active-Service $ $: آیا سرویس در حال اجرا است.
• ECHO “Service $ در حال اجرا است”: در صورت اجرای سرویس ، پیام را چاپ می کند.
• SystemCtl Service $ Service: در صورت عدم اجرای سرویس ، سرویس را شروع می کند.
sudo apt install nginx
sudo systemctl status nginx
./service-health.sh
sudo systemctl stop nginx
4. اتصال اتصال به شبکه اسکریپت را بررسی کنید
Output.txt را لمس کنید
#!/bin/bash
HOST="google.com"
# Output file
OUTPUT_FILE="/home/ubuntu/output.txt"
# Check if the host is reachable
if ping -c 1 $HOST &> /dev/null
then
echo "$HOST is reachable" >> $OUTPUT_FILE
else
echo "$HOST is not reachable" >> $OUTPUT_FILE
fi
توضیح
• میزبان: نام میزبان برای بررسی.
• output_file: پرونده برای نوشتن خروجی.
• پینگ -c 1 $ میزبان و> /dev /null: میزبان را یک بار ، سرکوب خروجی.
• echo “$ میزبان قابل دسترسی است” >> $ output_file: اگر میزبان به پرونده خروجی می نویسد
قابل دستیابی است.
میزبان قابل دسترسی نیست.
5. اسکریپت پشتیبان پایگاه داده
نصب
Install MySQL:
sudo apt install mysql-server -y
Set up MySQL password:
sudo mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY
'root';
FLUSH PRIVILEGES;
> show databases;
create database mydatabase;
exit
mkdir /home/ubuntu/db_backup # for this /path/to/backup
روش 1.
#!/bin/bash
DB_NAME="mydatabase"
BACKUP_DIR="/path/to/backup"
DATE=$(date +%Y-%m-%d_%H-%M-%S)
# Perform a database backup and save it to the backup directory
mysqldump -u root -p $DB_NAME > $BACKUP_DIR/$DB_NAME-$DATE.sql
echo "Database backup completed: $BACKUP_DIR/$DB_NAME-$DATE.sql"
روش 2. رمز عبور را پر کنید
#!/bin/bash
DB_NAME="mydatabase"
BACKUP_DIR="/path/to/backup"
DATE=$(date +%Y-%m-%d_%H-%M-%S)
DB_PASSWORD="root" # Added password variable
# Perform the backup (password provided automatically)
mysqldump -u root -p"$DB_PASSWORD" "$DB_NAME" > "$BACKUP_DIR/$DB_NAME-$DATE.sql"
echo "Database backup completed: $BACKUP_DIR/$DB_NAME-$DATE.sql"
روش 3 برای تولید و امنیت:
vim ~/.my.cnf
chmod 600 ~/.my.cnf
[mysqldump]
user=root
password=yourpassword
#!/bin/bash
DB_NAME="mydatabase"
BACKUP_DIR="/path/to/backup"
DATE=$(date +%Y-%m-%d_%H-%M-%S)
mysqldump "$DB_NAME" > "$BACKUP_DIR/$DB_NAME-$DATE.sql"
echo "Backup completed: $BACKUP_DIR/$DB_NAME-$DATE.sql"
6. SYSTEM UPTIME SCRIPT
#!/bin/bash
# Print the system uptime
uptime -p
توضیح
• Uptime -p: سیستم را به موقع با فرمت قابل خواندن انسانی چاپ می کند.
7. اسکریپت درگاه های گوش دادن
نصب
نصب ابزار خالص:
sudo apt install net-tools
#!/bin/bash
# List all listening ports and the associated services
netstat -tuln | grep LISTEN
Explanation
• netstat -tuln: Lists all TCP and UDP listening ports.
• grep LISTEN: Filters the output to show only listening ports.
8. اسکریپت به روزرسانی بسته بندی خودکار
#!/bin/bash
# Update system packages and clean up unnecessary packages
sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get autoremove -y && sudo apt-get clean
echo "System packages updated and cleaned up"
توضیح
• به روزرسانی مناسب: لیست بسته ها را به روز می کند.
• ارتقاء Apt -get -y: تمام بسته های نصب شده را ارتقا می دهد.
• apt -get autoremove -y: بسته های غیر ضروری را حذف می کند.
• Apt-Get Clean: حافظه نهان بسته را تمیز می کند.
• echo “بسته های سیستم به روز شده و تمیز شده”: یک پیام را نشان می دهد
تکمیل به روزرسانی و پاکسازی.
9. اسکریپت زمان پاسخ HTTP
#!/bin/bash
URLS=("https://www.google.com/" "https://www.linkedin.com/")
# Check HTTP response times for multiple URLs
for URL in "${URLS[@]}"; do
RESPONSE_TIME=$(curl -o /dev/null -s -w '%{time_total}\n' $URL)
echo "Response time for $URL: $RESPONSE_TIME seconds"
done
توضیح
• URL ها: مجموعه ای از URL ها برای بررسی.
• برای URL در “URL های $ {[@]} “: بیش از هر URL تکرار می شود.
• curl -o /dev /null -s -w '٪ {time_total} \ n' $ url: از curl برای واکشی URL استفاده می کند
زمان پاسخ کل را اندازه گیری کنید.
• echo “زمان پاسخ برای url $: $ پاسخ_ ثانیه”: پاسخ را چاپ می کند
زمان برای هر URL.
10. فرآیندهای سیستم و اسکریپت استفاده از حافظه را کنترل کنید
#!/bin/bash
# Monitor system processes and their memory usage
ps aux --sort=-%mem | head -n 10
توضیح
• PS Aux: تمام فرآیندهای در حال اجرا را لیست می کند.
•–SORT =-٪ MEM: فرآیندها را با استفاده از حافظه به ترتیب نزولی مرتب می کند.
• Head -n 10: 10 فرآیند برتر را با استفاده از حافظه نمایش می دهد.
11. اسکریپت نظارت بر سیستم:
#!/bin/bash
threshold=90
# Monitor CPU usage and trigger alert if threshold exceeded
# Method 1: Using vmstat (most reliable)
cpu_usage=$(vmstat 1 2 | tail -1 | awk '{print 100-$15}' | cut -d. -f1)
# Alternative method using top (if vmstat doesn't work)
# cpu_usage=$(top -bn1 | grep -i "cpu(s)" | awk '{gsub(/%us,|%user,|%/, ""); for(i=1;i<=NF;i++) if($i ~ /^[0-9]+\.?[0-9]*$/) {print $i; exit}}')
# Debug: Show what we captured
echo "Current CPU usage: $cpu_usage%"
if [ ! -z "$cpu_usage" ] && [ "$cpu_usage" -gt "$threshold" ]; then
echo "HIGH CPU ALERT: Usage is $cpu_usage% (threshold: $threshold%)"
# Add alert/notification logic here
# Example: mail -s "High CPU Alert" admin@example.com < /dev/null
# Example: logger "High CPU usage detected: $cpu_usage%"
else
echo "CPU usage normal: $cpu_usage%"
fi
برای نتایج بهتر از استرس CMD استفاده کنید