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

Skip to content

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

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

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

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

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

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

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 اجرا شود. بدون آن، سیستم نمی‌داند کدام برنامه باید اسکریپت را تفسیر کند.

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

For å kunne bruke modellen trenger du å sette noen variabler og gi den input. Variablene bestemmer hvordan modellen skal fungere, mens input er dataene den skal behandle.

For å sette variablene kan du bruke konfigurasjonsfilen config.yaml. Her kan du definere variabler som for eksempel:

  • learning_rate: Læringsraten for modellen.
  • num_epochs: Antall epoker modellen skal trenes på.
  • batch_size: Batchstørrelsen som skal brukes under trening.

Inputdataene må være i et format som modellen kan forstå. Dette kan være for eksempel en CSV-fil, en JSON-fil eller en tekstfil. Du må også spesifisere hvilke kolonner i filen som skal brukes som input og hvilke som skal brukes som målvariabel.

For å gi modellen input, kan du bruke funksjonen load_data(). Denne funksjonen tar inn filnavnet og spesifiserer hvilke kolonner som skal brukes som input og målvariabel.

data = load_data("data.csv", input_columns=["feature1", "feature2"], target_column="target")

Etter at du har lastet inn dataene, kan du trene modellen ved å bruke funksjonen train(). Denne funksjonen tar inn dataene og variablene som argumenter.

model.train(data, learning_rate=0.01, num_epochs=10, batch_size=32)

بعد از تنظیم متغیرها و ارائه داده‌ها به مدل، می‌توانید مدل را با استفاده از تابع train() آموزش دهید. این تابع داده‌ها و متغیرها را به عنوان آرگومان می‌گیرد.

model.train(data, learning_rate=0.01, num_epochs=10, batch_size=32)

#!/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: اسکریپت‌نویسی در ویندوز

PowerShell پاسخ ویندوز به Bash است، اما شی‌گرا‌تر است. این ابزار با اشیاء به جای متن کار می‌کند، که آن را برای مدیریت سیستم‌های ویندوز قدرتمند می‌سازد.

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

For å sjekke hvor mye diskplass du har igjen, kan du bruke kommandoen df -h. Denne viser diskbruken for alle monterte filsystemer i et lesbart format.

برای بررسی میزان فضای دیسک باقی‌مانده، می‌توانید از دستور df -h استفاده کنید. این دستور میزان استفاده از دیسک برای تمام سیستم‌های فایل متصل شده را در قالبی قابل خواندن نشان می‌دهد.

Du kan også bruke kommandoen du -h --max-depth=1 for å se hvor mye plass hver mappe og fil bruker i gjeldende katalog.

همچنین می‌توانید از دستور du -h --max-depth=1 برای مشاهده میزان فضایی که هر پوشه و فایل در فهرست فعلی استفاده می‌کند، استفاده کنید.

# بررسی فضای دیسک آزاد
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 وظیفه 1 - ایجاد یک اسکریپت به‌روزرسانی

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

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

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

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

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

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

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

خلاصه

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