برنامه نویسی

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

اسکریپت پوسته یک فایل متنی است که حاوی یک سری دستورات است که توسط یک پوسته یونیکس/لینوکس (مترجم خط فرمان) اجرا می شود. این وظایف تکراری را خودکار می کند ، چندین دستورات را ترکیب می کند و می تواند شامل سازه های برنامه نویسی مانند حلقه ها ، شرط ها و توابع باشد.

ویژگی های اصلی برنامه نویسی پوسته:

  1. اتوماسیون – دستورات را بدون ورودی دستی اجرا می کند.
  2. پردازش دسته ای – چندین دستورات را به صورت متوالی اجرا می کند.
  3. زبان اسکریپت – از متغیرها ، حلقه ها و شرط ها پشتیبانی می کند.
  4. قابلیت استفاده مجدد – اسکریپت ها را می توان ذخیره و استفاده مجدد کرد.
  5. سفارشی سازی – می تواند ورودی کاربر را بگیرد و خروجی پویا ایجاد کند.

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 استفاده کنید

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا