آموزش اسکریپت نویسی در لینوکس

اسکریپت نویسی در لینوکس

اسکریپت نویسی در لینوکس کارها و قابلیت‌های زیادی به ما میدهد و کمک می‌کند تا وظایف تکراری و پیچیده را به طور خودکار انجام دهیم. در ادامه چند کاربرد مهم اسکریپت نویسی در لینوکس را همراه با توضیح کامل دستورات آن مرور می‌کنیم.

فقط به خاطر داشته باشید برای درک بهتر اسکریپت نویسی در لینوکس بهتر است با ساختار فایل سیستم لینوکس و نیز مدیریت و نظارت بر فرآیندها و سرویس‌ها در لینوکس آشنایی داشته باشید.

اسکریپت نویسی در لینوکس

آموزش اسکریپت نویسی در لینوکس همراه با مثال و توضیح

در اینجا شما را با چند اسکریپت کاربردی همراه توضیح دستورات آنها آشنا میکنیم:

اسکریپت برای تهیه نسخه پشتیبان (Backup)

#!/bin/bash

tar -czf /backup/myfiles_backup_$(date +%F).tar.gz /home/user/myfiles

!/bin/bash: نشان‌دهنده این است که اسکریپت با استفاده از مفسر Bash اجرا می‌شود.

tar -czf: دستور tar برای فشرده‌سازی استفاده می‌شود. گزینه‌های -c برای ایجاد آرشیو، -z برای فشرده‌سازی با gzip و -f برای تعیین نام فایل خروجی است.
/backup/myfiles_backup_$(date +%F).tar.gz: نام فایل خروجی. عبارت $(date +%F) تاریخ امروز را در فرمت YYYY-MM-DD اضافه می‌کند.
/home/user/myfiles: مسیری که فایل‌ها از آن گرفته و فشرده می‌شوند.

نصب برنامه‌های جدید با استفاده از اسکریپت نویسی در لینوکس

!/bin/bash
sudo apt update
sudo apt install -y nginx mariadb-server php-fpm

sudo apt update: بسته‌های نصب شده در سیستم را با آخرین اطلاعات موجود در مخازن به‌روزرسانی می‌کند.
sudo apt install -y: دستور apt install برای نصب بسته‌ها استفاده می‌شود. -y به سیستم می‌گوید که بدون درخواست تایید از کاربر، بسته‌ها را نصب کند.
nginx mariadb-server php-fpm: لیست بسته‌هایی که باید نصب شوند.

نظارت بر فضای دیسک با اسکریپت نویسی در لینوکس

!/bin/bash
USAGE=$(df / | grep / | awk ‘{ print $5 }’ | sed ‘s/%//g’)
if [ $USAGE -gt 80 ]; then
echo “Disk usage is over 80%” | mail -s “Disk Alert” admin@example.com
fi

df /: این دستور وضعیت فضای دیسک برای فایل سیستم / (ریشه) را نمایش می‌دهد.
grep /: جستجو در خروجی دستور df برای خطی که مربوط به فایل سیستم / است.
awk ‘{ print $5 }’: از ابزار awk برای استخراج ستون پنجم (درصد استفاده از دیسک) استفاده می‌شود.
sed ‘s/%//g’: حذف علامت درصد از مقدار استفاده شده دیسک.
if [ $USAGE -gt 80 ]; then: بررسی می‌کند که اگر مقدار استفاده از دیسک بیشتر از ۸۰٪ باشد، هشدار ارسال کند.
mail -s “Disk Alert”: استفاده از دستور mail برای ارسال ایمیل هشدار.

ایجاد کاربران جدید در لینوکس

!/bin/bash
for user in user1 user2 user3
do
useradd $user
echo “password” | passwd –stdin $user
done

for user in user1 user2 user3: یک حلقه for که به ازای هر نام کاربر (user1, user2, user3) اجرا می‌شود.
useradd $user: دستور useradd برای ایجاد کاربر جدید با نام متغیر $user.
echo “password” | passwd –stdin $user: این دستور رمز عبور “password” را به کاربر جدید اختصاص می‌دهد.

پیکربندی شبکه با اسکریپت لینوکس

!/bin/bash

nmcli con mod eth0 ipv4.addresses 192.168.1.10/24
nmcli con mod eth0 ipv4.gateway 192.168.1.1
nmcli con up eth0

nmcli con mod eth0 ipv4.addresses 192.168.1.10/24: این دستور از nmcli (NetworkManager Command Line Interface) برای تغییر آدرس IP برای رابط شبکه eth0 استفاده می‌کند.
nmcli con mod eth0 ipv4.gateway 192.168.1.1: تنظیم گیت‌وی پیش‌فرض برای رابط شبکه eth0.
nmcli con up eth0: رابط شبکه eth0 را فعال می‌کند.

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

!/bin/bash

for file in *.txt
do
mv “$file” “new_${file}”
done

*for file in .txt: یک حلقه for برای تمامی فایل‌های .txt در دایرکتوری جاری اجرا می‌شود.
mv “$file” “new_${file}”: دستور mv برای تغییر نام فایل‌ها. new_ به ابتدای نام فایل فعلی اضافه می‌شود.

زمان‌بندی وظایف با cron در لینوکس

0 2 * * * /path/to/cleanup_logs.sh

**0 2 * * ***: این خط به cron می‌گوید که اسکریپت در ساعت 2:00 صبح هر روز اجرا شود.
/path/to/cleanup_logs.sh: مسیر اسکریپت که باید اجرا شود.

تعامل با API‌ها از طریق اسکریپت نویسی در لینوکس

!/bin/bash

curl -s “https://api.weather.com/v1/city?apikey=your_api_key” | jq .

curl -s: دستور curl برای ارسال درخواست به یک URL و دریافت داده‌ها. گزینه -s برای بی‌صدا بودن (بدون نمایش وضعیت) است.
jq .: این ابزار برای پردازش و نمایش داده‌های JSON استفاده می‌شود.

اسکریپت برای مانیتورینگ و راه‌اندازی مجدد سرویس‌ها

!/bin/bash

if ! pgrep nginx > /dev/null
then
systemctl restart nginx
fi

pgrep nginx: بررسی می‌کند که آیا فرآیندی به نام nginx در حال اجرا است یا خیر.
if ! pgrep nginx > /dev/null: اگر nginx در حال اجرا نباشد (خروجی pgrep خالی باشد)، اسکریپت ادامه می‌دهد.
systemctl restart nginx: دستور systemctl برای راه‌اندازی مجدد سرویس nginx.

تعامل با کاربر از طریق اسکریپت نویسی در لینوکس

!/bin/bash

echo “Enter your name:”
read name
echo “Hello, $name!”

echo “Enter your name:”: نمایش پیامی برای درخواست نام کاربر.
read name: ورودی کاربر را در متغیر name ذخیره می‌کند.
echo “Hello, $name!”: خوش‌آمدگویی به کاربر با نام ورودی.
این توضیحات به شما کمک می‌کنند تا بهتر بفهمید هر دستور چه کاری انجام می‌دهد و چگونه می‌توانید از آن‌ها در اسکریپت‌های خود استفاده کنید.

مانیتورینگ مصرف CPU با استفاده از اسکریپت نویسی در لینوکس

!/bin/bash

echo “Current CPU usage: “
top -b -n1 | grep “Cpu(s)” | awk ‘{print $2 + $4}’

top: نمایش اطلاعات مربوط به پردازش‌ها.
grep: فیلتر کردن خطی که شامل اطلاعات CPU است.
awk: جمع کردن مقادیر مربوط به کارکرد CPU.

گرفتن نسخه پشتیبان از یک پوشه از طریق اسکریپت نویسی در لینوکس

!/bin/bash

SOURCE=”/home/user/data”
DEST=”/backup/”
DATE=$(date +%Y-%m-%d)
tar -czf $DEST/backup-$DATE.tar.gz $SOURCE

tar -czf: ایجاد فایل فشرده tar.gz از پوشه.
date +%Y-%m-%d: اضافه کردن تاریخ به نام فایل پشتیبان برای نگهداری نسخه‌های متعدد.

نمایش اطلاعات حافظه RAM از طریق اسکریپت نویسی در لینوکس

!/bin/bash

echo “RAM usage:”
free -h

free -h: نمایش اطلاعات حافظه RAM با فرمت انسانی (Human-readable).

پاک کردن فایل‌های قدیمی‌تر از 30 روز با اسکریپت نویسی در لینوکس

!/bin/bash

find /path/to/files/* -mtime +30 -exec rm {} \;

find: جستجوی فایل‌ها.
-mtime +30: پیدا کردن فایل‌هایی که بیش از 30 روز از زمان ایجاد یا تغییرشان گذشته است.
-exec rm {}: حذف فایل‌ها.

چک کردن دسترسی به اینترنت از طریق اسکریپت

!/bin/bash

ping -c 4 google.com > /dev/null
if [ $? -eq 0 ]; then
echo “Internet is available.”
else
echo “No internet connection.”
fi

ping -c 4: ارسال 4 درخواست پینگ به گوگل.
if [ $? -eq 0 ]: بررسی کد خروجی برای اطمینان از موفقیت‌آمیز بودن پینگ.

اعلان مقدار دیسک آزاد با اسکریپت

!/bin/bash

df -h | grep ‘/dev/sda1’ | awk ‘{print $4}’

df -h: نمایش اطلاعات فضای دیسک.
grep ‘/dev/sda1’: فیلتر پارتیشن مورد نظر.
awk ‘{print $4}’: نمایش مقدار فضای آزاد.

ارسال ایمیل در صورت پر شدن دیسک از طریق اسکریپت نویسی

!/bin/bash

THRESHOLD=80
USAGE=$(df / | grep / | awk ‘{ print $5 }’ | sed ‘s/%//g’)
if [ $USAGE -gt $THRESHOLD ]; then
echo “Disk usage is at $USAGE%. Please take action.” | mail -s “Disk Warning” youremail@example.com
fi

df /: بررسی استفاده از دیسک root.
awk و sed: گرفتن درصد استفاده از دیسک.
mail: ارسال ایمیل هشدار.

تبدیل فایل‌های JPEG به PNG

!/bin/bash

for img in *.jpg; do
convert “$img” “${img%.jpg}.png”
done

for img in *.jpg: پیمایش در تمام فایل‌های jpg.
convert: استفاده از ابزار ImageMagick برای تبدیل فرمت.

بستن تمام پردازش‌های یک کاربر خاص از طریق اسکریپت نویسی در لینوکس

!/bin/bash

USER=”username”
pkill -u $USER

pkill -u $USER: بستن تمام پردازش‌های متعلق به کاربر مورد نظر.

بررسی وضعیت سرویس و راه‌اندازی مجدد در صورت نیاز

!/bin/bash

SERVICE=”apache2″
if systemctl is-active –quiet $SERVICE; then
echo “$SERVICE is running”
else
echo “$SERVICE is not running, starting $SERVICE…”
systemctl start $SERVICE
fi

systemctl is-active: بررسی وضعیت فعال بودن سرویس.
systemctl start: راه‌اندازی سرویس در صورت عدم فعالیت.
این اسکریپت‌ها می‌توانند به شما در مدیریت سرورهای لینوکسی و اجرای اتوماسیون‌های مختلف کمک کنند.

تغییر نام چندین فایل به صورت دسته‌ای

!/bin/bash

for file in *.txt; do
mv “$file” “${file%.txt}.bak”
done

for file in *.txt: پیمایش در تمام فایل‌های با پسوند .txt.
mv “$file” “${file%.txt}.bak”: تغییر نام فایل به پسوند .bak.

خروجی گرفتن از دستور ps برای پروسه‌های خاص

!/bin/bash

ps aux | grep ‘process_name’ > process_list.txt

ps aux: نمایش اطلاعات مربوط به تمام پردازش‌ها.
grep ‘process_name’: فیلتر کردن پردازش‌های خاص.

process_list.txt: ذخیره خروجی در فایل.

چک کردن تعداد فایل‌های موجود در یک پوشه

!/bin/bash

DIRECTORY=”/path/to/directory”
FILE_COUNT=$(ls -1 $DIRECTORY | wc -l)
echo “Number of files in $DIRECTORY: $FILE_COUNT”

ls -1 $DIRECTORY: لیست کردن فایل‌ها به صورت یک‌خطی.
wc -l: شمارش تعداد خطوط (فایل‌ها).

اضافه کردن تاریخ و زمان به نام فایل با استفاده از اسکریپت نویسی در لینوکس

!/bin/bash

FILENAME=”report”
DATE=$(date +%Y-%m-%d_%H-%M-%S)
cp “$FILENAME.txt” “${FILENAME}_$DATE.txt”

date +%Y-%m-%d_%H-%M-%S: تولید تاریخ و زمان به فرمت قابل خواندن.
cp “$FILENAME.txt” “${FILENAME}_$DATE.txt”: کپی فایل با افزودن تاریخ و زمان به نام.

ایجاد یک فایل متنی با محتوای تصادفی

!/bin/bash

head -c 100 random_file.txt

head -c 100 </dev/urandom: تولید 100 بایت داده تصادفی.

random_file.txt: ذخیره داده‌ها در فایل.

ارسال یک پیام متنی با استفاده از mail

!/bin/bash

echo “This is a test message” | mail -s “Test Email” youremail@example.com

echo “This is a test message”: پیام متنی.
mail -s “Test Email”: ارسال ایمیل با موضوع “Test Email”.

پیکربندی دسترسی SSH به صورت خودکار از طریق اسکریپت نویسی در لینوکس

!/bin/bash

ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -N “”
ssh-copy-id user@remote_host

ssh-keygen -t rsa -b 2048: تولید کلید SSH.
ssh-copy-id user@remote_host: ارسال کلید عمومی به میزبان از راه دور.

حذف فایل‌های موقت از پوشه /tmp

!/bin/bash

find /tmp -type f -atime +7 -exec rm {} \;

find /tmp -type f -atime +7: پیدا کردن فایل‌های قدیمی‌تر از 7 روز.
-exec rm {} \;: حذف فایل‌ها.

گزارش استفاده از فضای دیسک در مسیرهای مختلف

!/bin/bash

du -sh /home/* | sort -h

du -sh /home/*: نمایش اندازه دایرکتوری‌ها.
sort -h: مرتب‌سازی بر اساس اندازه به صورت انسانی.

تولید گزارش از استفاده CPU و حافظه

!/bin/bash

echo “CPU Usage:”
top -bn1 | grep “Cpu(s)”
echo “Memory Usage:”
free -h

top -bn1: نمایش وضعیت فعلی پردازش‌ها.
grep “Cpu(s)”: فیلتر کردن اطلاعات استفاده از CPU.
free -h: نمایش استفاده از حافظه به صورت قابل خواندن.

در این پست ما سعی کردیم که موارد استفاده از اسکریپت نویسی در لینوکس را همراه با توضیح دستورات برای شما قرار دهیم،