Try   HackMD
tags: Linux, bash, Wireguard.

Автоматизируйте работу с Wireguard.

Напишите скрипт который будет создавать клиентские конфиги

И так для начала определимся что должен делать скрипт.

Во первых желательно создавать папки для каждого клиента с файлом конфигурации и ключами, называть папки желательно по какому-то индификатору клиента, поэтому у нас уже есть один параметр который принимает скрипт: $1 - имя или идентификатор клиента.

Скрипт должен создавать конфиги клиента, а также дописывать конфиг сервера. При этом для каждого клиента, после каждого использования скрипта должен назначаться не занятый IP адресс в VPN сети. Ну и после всех действий должны выполняться перезагрузка службы wg.

В конфиге сервера перед добавлением пира подписывайте коментом индификатор клиента из параметра $1

Скрипт для создания клиентов должен лежать в /etc/wireguard/script директории.

Напишите скрипт который разворачивает Wireguard сервер на Linux с нуля и протестируйте его.(PS:пожауйста не используйте уже готовые скрипты а напишите свой это полезная тренеровка.)

Данный скрипт должен принимать все неообходимые параметры для создания конфига из файла или при запуске программы.

Скрипт должен создавать два дополнительных каталога client и script в директории /etc/wireguard и в папку script закидывать ваш скрипт для создания конфигов клиента.

Что нужно знать для выполнения задания.

Что нужно знать.

  1. В сприте bash вы можете использовать все команды которые у вас работают в Linux.
  2. Вы можете использовать переменные как и в любых языках программирования.
  3. Вы можете использовать условия и циклы.
  4. Вы можете создавать функции.
  5. И тд.

Bash.

Для начала, большинство необходимых вам команд вы можете взять из гайда: Настройка Wireguard.

Используйте в начале файла со скриптом чтобы указать где лежит bash-интерпретатор.

#!/bin/bash

Для создания переменных используйте четкие и понятные названия:

privatekey_url="/etc/wireguard/privatekey"

Обратите внимание что между = нету пробелов.

Чтобы записать содержимое какого либо файла в переменную вы можете использовать следующию конструкцию:

privatekey=$(<$privatekey_url)

Для обращение к переменной и вставки ее значения в какую либо команду используйте знак $.

Чтобы записать какой либо текст в файл используйте операторы перенапрваления:

echo "#Пользователь: $1" >> wg0.conf

Внимание используя > вы замените все содержимое файла на вставляемый текст, используя >> вы запишите текст в конец файла не удаляя его содержимого.

Обратите внимание на $1 такая запись используеться для обращения к первому аргументу после запуска скрипта. К примеру командой: script.sh erik вы передадите в скрипт в переменную 1 значение erik. Соответсвтенно $2 передадите 2 аргумент после запуска скрипта и тд.

Если вы не хотите чтобы скрипт выводил какие либо ошибки или либой другой ввывод после выполнения команды добавьте знак &

systemctl restart wg-quick@wg0 &

В таком случае команда выполниться в фоне.

Впринципе этого достаточно чтобы написать скрипт. В остольном гугл в помощь к примеру: Руководство по написанию Bash скриптов.