اسکریپت نویسی در لینوکس کارها و قابلیتهای زیادی به ما میدهد و کمک میکند تا وظایف تکراری و پیچیده را به طور خودکار انجام دهیم. در ادامه چند کاربرد مهم اسکریپت نویسی در لینوکس را همراه با توضیح کامل دستورات آن مرور میکنیم.
فقط به خاطر داشته باشید برای درک بهتر اسکریپت نویسی در لینوکس بهتر است با ساختار فایل سیستم لینوکس و نیز مدیریت و نظارت بر فرآیندها و سرویسها در لینوکس آشنایی داشته باشید.
آموزش اسکریپت نویسی در لینوکس همراه با مثال و توضیح
در اینجا شما را با چند اسکریپت کاربردی همراه توضیح دستورات آنها آشنا میکنیم:
اسکریپت برای تهیه نسخه پشتیبان (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: نمایش استفاده از حافظه به صورت قابل خواندن.
در این پست ما سعی کردیم که موارد استفاده از اسکریپت نویسی در لینوکس را همراه با توضیح دستورات برای شما قرار دهیم،
نظر خود را در مورد این مقاله بنویسید