Shell scripting হল একটি শক্তিশালী এবং কার্যকরী উপায়, যার মাধ্যমে আপনি complex automation tasks (জটিল অটোমেশন কাজ) সম্পন্ন করতে পারেন। এটি সিস্টেম অ্যাডমিনিস্ট্রেশন, ডেটা প্রসেসিং, ব্যাকআপ ব্যবস্থাপনা, টাস্ক স্কেডিউলিং এবং আরও অনেক ক্ষেত্রে ব্যবহৃত হয়। Shell scripts বিশেষভাবে bash scripting ব্যবহৃত হয়ে থাকে, কারণ bash (Bourne Again Shell) অধিকাংশ Unix এবং Linux সিস্টেমে প্রিফারড শেল।
নিচে Shell scripting এর মাধ্যমে complex automation tasks করার কিছু উদাহরণ দেওয়া হলো।
1. Automated Backup Creation
Use-case: সিস্টেম বা ডেটাবেসের অটোমেটিক ব্যাকআপ তৈরি করা এবং সংরক্ষণ।
Shell Script: একটি স্ক্রিপ্ট তৈরি করে ডিরেক্টরি বা ডেটাবেসের ব্যাকআপ তৈরি করতে পারেন।
#!/bin/bash
# Define the backup source and destination directories
SOURCE_DIR="/home/user/data"
BACKUP_DIR="/home/user/backups"
# Create a timestamp for backup naming
TIMESTAMP=$(date +%Y-%m-%d_%H-%M-%S)
# Create the backup
tar -czf $BACKUP_DIR/backup_$TIMESTAMP.tar.gz $SOURCE_DIR
# Check if the backup was successful
if [ $? -eq 0 ]; then
echo "Backup created successfully: backup_$TIMESTAMP.tar.gz"
else
echo "Backup failed!"
fiExplained:
tarকমান্ডটি ব্যবহার করে আপনি একটি টারগেট ডিরেক্টরি (যেমন /home/user/data) থেকে compressed archive (tar.gz ফাইল) তৈরি করবেন।dateকমান্ড ব্যবহার করে একটি timestamp তৈরি করা হবে, যা ব্যাকআপ ফাইলের নামের সাথে যুক্ত হবে।
Usage:
- এটি ক্রনজব (cron job) হিসেবে রেকারিং ব্যাকআপ এর জন্য চালানো যেতে পারে।
2. System Resource Monitoring and Alerting
Use-case: সিস্টেমের রিসোর্স (CPU, Memory, Disk) ব্যবহারের মনিটরিং এবং threshold অতিক্রম করলে এলার্ট পাঠানো।
Shell Script: সিস্টেমের CPU এবং RAM ব্যবহার মনিটর করা এবং threshold অতিক্রম করলে এলার্ট পাঠানো।
#!/bin/bash
# Set thresholds for CPU and memory usage
CPU_THRESHOLD=80
MEMORY_THRESHOLD=80
# Get current CPU and memory usage percentages
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')
MEMORY_USAGE=$(free | grep Mem | awk '{print $3/$2 * 100.0}')
# Check if CPU usage exceeds the threshold
if [ $(echo "$CPU_USAGE > $CPU_THRESHOLD" | bc) -eq 1 ]; then
echo "Warning: CPU usage is at $CPU_USAGE%" | mail -s "CPU Usage Alert" user@example.com
fi
# Check if memory usage exceeds the threshold
if [ $(echo "$MEMORY_USAGE > $MEMORY_THRESHOLD" | bc) -eq 1 ]; then
echo "Warning: Memory usage is at $MEMORY_USAGE%" | mail -s "Memory Usage Alert" user@example.com
fiExplained:
topকমান্ডের মাধ্যমে CPU ব্যবহারের শতাংশ পাওয়া হয়েছে।freeকমান্ডের মাধ্যমে মেমরি ব্যবহারের শতাংশ হিসাব করা হয়েছে।bcব্যবহার করে শর্ত যাচাই করা হয়েছে (যেমন, 80% CPU ব্যবহার হলে এলার্ট পাঠানো হবে)।- এলার্ট হিসেবে একটি email পাঠানো হচ্ছে।
Usage:
- স্ক্রিপ্টটি ক্রনজব (cron job) হিসেবে নির্দিষ্ট সময় পর পর চালানো যেতে পারে।
3. File Processing and Reporting
Use-case: একাধিক ফাইল থেকে ডেটা প্রসেস করা এবং রিপোর্ট তৈরি করা।
Shell Script: সমস্ত text files থেকে নির্দিষ্ট প্যাটার্ন খুঁজে, তাদের সংখ্যা এবং স্থান রেকর্ড করা এবং একটি রিপোর্ট তৈরি করা।
#!/bin/bash
# Define the directory containing files
DIRECTORY="/home/user/documents"
# Initialize a report file
REPORT="/home/user/report.txt"
echo "Pattern Search Report - $(date)" > $REPORT
# Loop through all text files in the directory
for FILE in $DIRECTORY/*.txt; do
# Search for the pattern and count occurrences
PATTERN_COUNT=$(grep -o "ERROR" "$FILE" | wc -l)
# If the pattern exists, write it to the report
if [ $PATTERN_COUNT -gt 0 ]; then
echo "File: $FILE - ERROR occurrences: $PATTERN_COUNT" >> $REPORT
fi
done
# Output final report path
echo "Report generated at: $REPORT"Explained:
grepকমান্ড ব্যবহার করে "ERROR" প্যাটার্নের occurrences গননা করা হয়েছে।- প্রতিটি .txt ফাইল থেকে তথ্য সংগ্রহ করে একটি রিপোর্টে যোগ করা হয়েছে।
wc -lদিয়ে প্রতিটি ফাইলে প্যাটার্নের সংখ্যা গননা করা হয়েছে।
Usage:
- এই স্ক্রিপ্টটি সিস্টেমের log files বা text data বিশ্লেষণ করতে ব্যবহৃত হতে পারে।
4. Automated Cleanup of Temporary Files
Use-case: পুরনো অস্থায়ী ফাইলগুলো সিস্টেম থেকে স্বয়ংক্রিয়ভাবে মুছে ফেলা।
Shell Script: 30 দিনের পুরনো অস্থায়ী ফাইল মুছে ফেলা।
#!/bin/bash
# Define the directory where temporary files are stored
TEMP_DIR="/tmp"
# Find and delete files older than 30 days
find $TEMP_DIR -type f -mtime +30 -exec rm -f {} \;
# Log the cleanup action
echo "Cleanup completed at $(date)" >> /var/log/cleanup.logExplained:
findকমান্ড দিয়ে/tmpডিরেক্টরি থেকে 30 দিনের পুরনো ফাইলগুলো খুঁজে মুছে ফেলা হয়েছে।-exec rm -f {}কমান্ডটি সেই ফাইলগুলো মুছে ফেলবে যা 30 দিন বা তার বেশি পুরনো।
Usage:
- এই স্ক্রিপ্টটি cron দিয়ে daily বা weekly রান করা যেতে পারে।
5. Batch Renaming Files
Use-case: একাধিক ফাইলের নাম পরিবর্তন করা (batch renaming), যেমন একাধিক ছবি বা ডকুমেন্টের নাম সঙ্গতিপূর্ণভাবে পরিবর্তন করা।
Shell Script: একাধিক ফাইলের নাম পরিবর্তন করা যাতে তাদের মধ্যে একটি কনভেনশন থাকে।
#!/bin/bash
# Define the directory with files
DIRECTORY="/home/user/images"
# Loop through all JPG files and rename them
for FILE in $DIRECTORY/*.jpg; do
NEW_NAME=$(echo $FILE | sed 's/old_pattern/new_pattern/')
mv "$FILE" "$NEW_NAME"
done
# Confirmation message
echo "Files renamed successfully."Explained:
sedব্যবহার করে পুরনো প্যাটার্নের সাথে মিল পাওয়া ফাইলগুলির নাম নতুন কনভেনশন অনুযায়ী পরিবর্তন করা হচ্ছে।mvকমান্ড দিয়ে ফাইলগুলোর নাম পরিবর্তন করা হচ্ছে।
Usage:
- ছবির বা ডকুমেন্টের নাম কনভেনশন ঠিক করতে বা batch renaming করতে ব্যবহৃত হবে।
6. Scheduling Tasks using Cron Jobs
Use-case: স্বয়ংক্রিয়ভাবে নির্দিষ্ট সময় পর পর স্ক্রিপ্ট চালানো (e.g., every day at midnight).
Shell Script: প্রতিদিন মধ্যরাতে ব্যাকআপ তৈরি করা।
#!/bin/bash
# Define the source and backup directories
SOURCE_DIR="/home/user/data"
BACKUP_DIR="/home/user/backups"
TIMESTAMP=$(date +%Y-%m-%d_%H-%M-%S)
# Create the backup
tar -czf $BACKUP_DIR/backup_$TIMESTAMP.tar.gz $SOURCE_DIR
echo "Backup completed: backup_$TIMESTAMP.tar.gz"Usage:
- এই স্ক্রিপ্টটি cron job হিসেবে প্রতিদিন মধ্যরাতে ব্যাকআপ নেওয়ার জন্য ব্যবহার করা যেতে পারে।
Conclusion
Shell scripting-এর মাধ্যমে আপনি complex automation tasks খুব সহজেই বাস্তবায়ন করতে পারেন। ব্যাচ ফাইল প্রসেসিং, সিস্টেম মনিটরিং, ডেটা সংগ্রহ এবং রিপোর্ট তৈরি, ব্যাকআপ তৈরি, ফাইল রিনেমিং, এবং আরও অনেক কাজ স্বয়ংক্রিয়ভাবে করার জন্য shell scripting অত্যন্ত কার্যকরী। Shell scripts দিয়ে আপনি দৈনন্দিন সিস্টেম ব্যবস্থাপনা, ফাইল পরিচালনা, এবং টাস্ক অটোমেশনকে দ্রুত এবং দক্ষভাবে সম্পাদন করতে পারেন।
Read more