Це машинний переклад, який може містити помилки!
Скриптування з Bash та PowerShell
Якщо ви виконували одне й те саме завдання втретє, настав час автоматизувати його. Скриптування – це дозволити машині виконувати нудну роботу за вас, швидше та не забуваючи нічого.
Чому автоматизувати?
Деякі завдання в ІТ-експлуатації виконуються часто:
- Оновлювати сервери
- Створювати користувачів
- Робити резервні копії
- Перезапускати сервіси після оновлення
- Перевіряти, чи працюють сервіси
Виконання цих завдань вручну щоразу займає час, і легко забути якийсь крок. Скрипт робить те саме щоразу, не скаржачись.
Новий у Proxmox або налаштуванні ВМ?
[[Віртуалізація Рівень 1 - Пособник з ВМ|🖥️ Віртуалізація]] показує, як створювати та конфігурувати віртуальну машину в Proxmox — вам потрібна робоча ВМ для завдань цього предмета.
Bash: Скриптування в Linux
Bash є оболонкою (терміналом) у більшості дистрибутивів Linux, і воно також може виконувати скрипти. Bash-скрипт — це просто текстовий файл з командами, які виконуються послідовно.
Ваш перший скрипт
Створіть файл з назвою oppdater.sh:
#!/bin/bash
# Оновіть список пакетів та встановіть оновлення
echo "Оновлюється система..."
sudo apt update
sudo apt upgrade -y
echo "Готово!"
Зробіть файл виконуваним та запустіть його:
chmod +x oppdater.sh
./oppdater.sh
# Зробіть скрипт виконуваним
# Запустіть скрипт
#!/bin/bash
Перший рядок називається shebang. Він повідомляє операційній системі, що файл потрібно виконувати за допомогою Bash. Без нього система не знає, яку програму використовувати для інтерпретації скрипту.
Змінні та вхідні дані
#!/bin/bash
BRUKERNAVN=$1
if [ -z "$BRUKERNAVN" ]; then
echo "Використання: ./lag_bruker.sh <ім'я_користувача>"
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, але воно більш об’єктно-орієнтоване. Воно працює з об’єктами, а не лише з текстом, що робить його потужним для адміністрування Windows-систем.
Приклад: Перевірка дискового простору
# Перевірте вільний дисковий простір
Get-PSDrive -PSProvider FileSystem | Select-Object Name,
@{Name="Використано (ГБ)"; Expression={[math]::Round($_.Used / 1GB, 2)}},
@{Name="Вільний (ГБ)"; 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
Це набагато швидше, ніж завантажувати та встановлювати все вручну. Ви можете зберегти список у скрипті та запускати його кожного разу, коли налаштовуєте нову машину.
Chocolatey – альтернатива до Winget
Chocolatey — це сторонній менеджер пакетів для Windows, який має ту саму мету, що й Winget: замість winget install Mozilla.Firefox використовується choco install firefox. Winget вбудований у Windows і покриває ті ж потреби, тому вам не потрібно використовувати обидва, щоб зрозуміти концепцію.
Завдання 1 - Створіть скрипт оновлення
Напишіть Bash-скрипт, який:
- Оновлює список пакетів
- Встановлює всі доступні оновлення
- Перезапускає Nginx (або іншу службу, яку ви використовуєте)
- Виводить повідомлення про завершення
Запустіть його на одній зі своїх ВМ і переконайтеся, що воно працює.
У вас ще не запущено Nginx або іншу службу?
Запустіть та дослідіть контейнер налаштовує контейнер Nginx, який ви можете використовувати для цього завдання.
Завдання 2 - Автоматизуйте налаштування машини
Створіть PowerShell-скрипт (.ps1) або простий список команд winget install для всіх програм, які вам потрібні на новому ПК. Подумайте над:
- Які програми ви завжди встановлюєте?
- Чи можете ви також налаштувати деякі параметри за допомогою скрипту?
Наступного разу, коли ви налаштовуєте машину, просто запустіть скрипт замість того, щоб витрачати годину на ручне встановлення.
Хочете писати скрипти на Python замість цього?
Bash та PowerShell найпоширеніші для системного скриптингу, але Python також працює добре. 🐍 Python і наступні рівні дадуть вам основу, а бібліотеки, такі як os та subprocess, дозволяють робити багато з того ж самого, що й тут.
Підсумок
- Якщо ви робите щось більше ніж двічі, розгляньте можливість автоматизації цього
- Bash (Linux) та PowerShell (Windows) є найпоширенішими інструментами для скриптингу
- Bash-скрипти є текстовими файлами з командами, які виконуються послідовно
- PowerShell працює з об’єктами та є потужним для адміністрування Windows
- Змінні, аргументи, if-перевірки та цикли є основними будівельними блоками