Hopp til innhold

Скриптинг с помощью Bash и PowerShell,

Skip to content

Это машинный перевод текста, который может содержать ошибки!

Скрипты на 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 "Usage: ./lag_bruker.sh <username>"
    exit 1
fi

sudo adduser "$BRUKERNAVN"
sudo usermod -aG sudo "$BRUKERNAVN"
echo "User $BRUKERNAVN created with sudo access."

Здесь скрипт принимает имя пользователя в качестве аргумента (первый аргумент — $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: choco install firefox вместо winget install Mozilla.Firefox. Поскольку Winget встроен в Windows и покрывает ту же потребность, вам не нужны оба инструмента для понимания концепции.

Легко Задание 1 — Напишите скрипт обновления

Напишите Bash-скрипт, который:

  1. Обновляет список пакетов
  2. Устанавливает все доступные обновления
  3. Перезапускает Nginx (или другую службу, которая у вас запущена)
  4. Выводит сообщение при завершении работы

Запустите его на одной из ваших виртуальных машин и убедитесь в том, что он работает.

У вас ещё не запущен Nginx или другая служба?

[[Использование контейнеров Уровень 1 - Запуск и проверка контейнера|Запустите и проверьте контейнер]] настраивает контейнер Nginx, который вы можете использовать для этой задачи.

Легко Задание 2 — Автоматизация настройки компьютера

Создайте скрипт PowerShell (.ps1) или простой список команд winget install для всех программ, необходимых на новом ПК. Подумайте о следующем:

  • Какие программы вы всегда устанавливаете?
  • Можете ли вы также настроить некоторые параметры с помощью скрипта?

В следующий раз при настройке компьютера просто выполните скрипт вместо того, чтобы тратить час на ручную установку.

Хотите писать скрипты на Python вместо этого?

Bash и PowerShell являются наиболее распространёнными для системного скриптового программирования, но Python тоже работает хорошо. [[Python 1 Уровень 1 - Введение в Python|🐍 Python]] и следующие уровни дадут вам основу, а библиотеки такие как os и subprocess позволяют делать многое из того же самого, что и здесь.

Резюме

  • Если вы делаете что-то более двух раз, подумайте об автоматизации этого процесса
  • Bash (Linux) и PowerShell (Windows) — самые распространенные инструменты для написания скриптов
  • Скрипты на Bash представляют собой текстовые файлы с командами, выполняемыми последовательно
  • PowerShell работает с объектами и является мощным инструментом для администрирования в Windows
  • Переменные, аргументы, проверки условий и циклы являются основными строительными блоками