اسکریپت‌نویسی با Bash و PowerShell

Skip to content

این یک متن ترجمه شده توسط ماشین است که ممکن است حاوی خطا باشد!

اگر برای سومین بار یک کار مشابه را انجام داده‌اید، وقت آن رسیده است که آن را خودکار کنید. اسکریپت‌نویسی یعنی اجازه دادن به ماشین برای انجام کارهای خسته‌کننده به جای شما، با سرعت بیشتر و بدون فراموش کردن هیچ موردی.

چرا خودکارسازی؟

برخی از وظایف در مدیریت IT اغلب تکرار می‌شوند:

  • به‌روزرسانی سرورها
  • ایجاد کاربران
  • تهیه نسخه پشتیبان (Backup)
  • راه‌اندازی مجدد سرویس‌ها پس از یک به‌روزرسانی
  • بررسی اینکه سرویس‌ها در حال اجرا هستند

انجام دستی این کارها در هر بار، زمان‌بر است و فراموش کردن یک مرحله بسیار آسان است. یک اسکریپت هر بار همان کار را بدون شکایت انجام می‌دهد.

Bash: اسکریپت‌نویسی در لینوکس

Bash شل (ترمینال) در اکثر توزیع‌های لینوکس است و می‌تواند اسکریپت‌ها را نیز اجرا کند. یک اسکریپت Bash به زبان ساده یک فایل متنی حاوی دستوراتی است که به ترتیب اجرا می‌شوند.

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

فایلی به نام oppdater.sh ایجاد کنید:

#!/bin/bash
# لیست بسته‌ها را به‌روزرسانی کرده و آپدیت‌ها را نصب کنید
echo "Oppdaterer systemet..."
sudo apt update
sudo apt upgrade -y
echo "Ferdig!"

فایل را قابل اجرا کنید و آن را اجرا کنید:

chmod +x oppdater.sh
./oppdater.sh

#!/bin/bash

خط اول یک shebang نامیده می‌شود. این خط به سیستم‌عامل می‌گوید که فایل باید با Bash اجرا شود. بدون آن، سیستم نمی‌داند کدام برنامه باید اسکریپت را تفسیر کند.

متغیرها و ورودی‌ها

#!/bin/bash
BRUKERNAVN=$1

if [ -z "$BRUKERNAVN" ]; then
    echo "نحوه استفاده: ./lag_bruker.sh <brukernavn>"
    exit 1
fi

sudo adduser "$BRUKERNAVN"
sudo usermod -aG sudo "$BRUKERNAVN"
echo "کاربر $BRUKERNAVN با دسترسی sudo ایجاد شد."

در اینجا اسکریپت یک نام کاربری را به عنوان آرگومان دریافت می‌کند ($1 اولین آرگومان است). اگر ./lag_bruker.sh ola را اجرا کنید، کاربر ola را ایجاد کرده و به آن دسترسی sudo می‌دهد.

مفاهیم مفید Bash

مفهوم مثال عملکرد
متغیر NAVN="Ola" ذخیره یک مقدار
آرگومان $1, $2 ورودی از خط فرمان
بررسی If if [ -f "fil.txt" ]; then بررسی وجود یک فایل
حلقه For for f in *.log; do انجام یک عملیات برای هر فایل مطابق با الگو
پایپ (Pipe) cat logg.txt \| grep "ERROR" ارسال خروجی یک دستور به دستور دیگر

PowerShell: اسکریپت‌نویسی در Windows

PowerShell پاسخ Windows به Bash است، اما شیءگرا‌تر (object-oriented) است. این ابزار به جای متن، با اشیاء کار می‌کند که آن را برای مدیریت سیستم‌های Windows بسیار قدرتمند می‌سازد.

مثال: بررسی فضای دیسک

# بررسی فضای خالی دیسک
Get-PSDrive -PSProvider FileSystem | Select-Object Name, 
    @{Name="Brukt (GB)"; Expression={[math]::Round($_.Used / 1GB, 2)}},
    @{Name="Ledig (GB)"; Expression={[math]::Round($_.Free / 1GB, 2)}}

مثال: نصب نرم‌افزار با Winget

# نصب چندین برنامه به طور همزمان
winget install Mozilla.Firefox
winget install Microsoft.VisualStudioCode
winget install Git.Git
winget install Python.Python.3.12

این بسیار سریع‌تر از دانلود و نصب دستی همه موارد است. شما می‌توانید این لیست را در یک اسکریپت ذخیره کنید و هر بار که یک ماشین جدید را راه‌اندازی می‌کنید، آن را اجرا کنید.

Easy تمرین ۱ - ساخت یک اسکریپت به‌روزرسانی

یک اسکریپت Bash بنویسید که:

  1. لیست بسته‌ها را به‌روزرسانی کند
  2. تمام به‌روزرسانی‌های موجود را نصب کند
  3. Nginx (یا هر سرویس دیگری که در حال اجرا دارید) را ری‌استارت کند
  4. پس از اتمام کار، یک پیام چاپ کند

آن را روی یکی از VMهای خود اجرا کنید و مطمئن شوید که به درستی کار می‌کند.

Easy تمرین ۲ - خودکارسازی تنظیمات سیستم

یک اسکریپت PowerShell (.ps1) یا یک لیست ساده از دستورات winget install برای تمام برنامه‌های مورد نیاز خود در یک کامپیوتر جدید ایجاد کنید. به این موارد فکر کنید:

  • چه برنامه‌هایی را همیشه نصب می‌کنید؟
  • آیا می‌توانید برخی تنظیمات را نیز با اسکریپت پیکربندی کنید؟

دفعه بعد که یک سیستم را راه‌اندازی می‌کنید، به جای صرف یک ساعت زمان برای نصب دستی، فقط اسکریپت را اجرا می‌کنید.

خلاصه

  • اگر کاری را بیش از دو بار انجام می‌دهید، در نظر بگیرید که آن را خودکار کنید
  • Bash (Linux) و PowerShell (Windows) رایج‌ترین ابزارها برای اسکریپت‌نویسی هستند
  • اسکریپت‌های Bash فایل‌های متنی حاوی دستوراتی هستند که به ترتیب اجرا می‌شوند
  • PowerShell با اشیاء کار می‌کند و برای مدیریت Windows بسیار قدرتمند است
  • متغیرها، آرگومان‌ها، شرط‌های if و حلقه‌ها مهم‌ترین بلوک‌های سازنده هستند