Neonode.cc - Mind space blog
open main menu
Part of series: server-tools

Как создать утилиту командной строки для управления Caddy

/ 3 min read

Введение

Управление сервером Caddy можно сделать намного удобнее, написав небольшую утилиту командной строки, которая позволит выполнять часто используемые действия одной короткой командой. Например, вместо того чтобы каждый раз вводить длинные команды для редактирования конфигурационного файла, перезапуска, проверки состояния или валидации, можно создать скрипт, который всё это делает за вас.

Эта статья покажет, как я создал простую утилиту на Bash, которую я назвал Cadd. Она помогает управлять Caddy через несколько сокращённых команд. Приведённые шаги детально объясняют, как настроить скрипт, сделать его исполняемым и использовать для повседневных задач.

Шаг 1: Создание файла скрипта

Первое, что нужно сделать, это создать файл, в котором будет размещён наш скрипт. Я решил назвать его Cadd, но вы можете выбрать любое другое имя. Этот файл будет размещён в директории /usr/local/bin, чтобы скрипт был доступен как системная команда.

Для создания файла выполните следующую команду:

sudo nano /usr/local/bin/cadd

Почему именно эта директория?

Директория /usr/local/bin является стандартным местом для пользовательских исполняемых файлов на Unix-подобных системах, таких как Linux и macOS. Она автоматически добавлена в переменную окружения $PATH, что позволяет запускать скрипты, находящиеся в этой директории, без указания полного пути.

Шаг 2: Написание самого скрипта

Теперь давайте добавим код в файл cadd. Этот скрипт будет выполнять несколько ключевых операций: редактировать конфигурационный файл Caddy, перезапускать сервис, валидировать конфигурацию, проверять статус, выводить последние строки журнала и форматировать файл.

Код скрипта:

#!/bin/bash

CONFIG_FILE="/etc/caddy/Caddyfile" # Путь к файлу конфигурации Caddy
LOG_LINES=20 # Количество строк журнала для вывода

# Цвета для вывода в консоль
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # Без цвета (сброс)

case "$1" in
    e) # Редактирование конфигурации
        nano "$CONFIG_FILE"
        ;;
    r) # Рестарт сервиса Caddy
        systemctl restart caddy
        echo -e "${GREEN}Caddy перезапущен.${NC}"
        ;;
    v) # Валидация конфигурационного файла
        caddy validate --config "$CONFIG_FILE"
        ;;
    s) # Статус сервиса Caddy
        systemctl status caddy | head -n 10
        ;;
    l) # Логи сервиса Caddy
        journalctl -u caddy.service -n "$LOG_LINES"
        ;;
    f) # Форматирование Caddyfile
        caddy fmt --overwrite "$CONFIG_FILE"
        echo -e "${GREEN}Файл ${YELLOW}$CONFIG_FILE${GREEN} был отформатирован.${NC}"
        ;;
    h) # Вывод помощи
        echo -e "${YELLOW}Использование:${NC}"
        echo -e "${BLUE}cadd e${NC} - редактировать Caddyfile"
        echo -e "${BLUE}cadd r${NC} - перезапустить Caddy"
        echo -e "${BLUE}cadd v${NC} - проверить валидность Caddyfile"
        echo -e "${BLUE}cadd s${NC} - статус Caddy"
        echo -e "${BLUE}cadd l${NC} - показать последние ${LOG_LINES} строк логов Caddy"
        echo "${BLUE}cadd f${NC} - форматировать файл ${CONFIG_FILE}"
        echo -e "${BLUE}cadd h${NC} - показать помощь"
        ;;
    *) # Неправильный ввод команды
        echo -e "${RED}Неправильная опция!${NC} Использование: cadd {e|r|v|s|l|h|f}"
        ;;
esac

Шаг 3: Предоставление прав на выполнение

Чтобы скрипт мог быть выполнен, необходимо сделать его исполняемым. Для этого выполните следующую команду:

sudo chmod +x /usr/local/bin/cadd

Теперь скрипт готов к использованию. Вы можете вызывать его как обычную команду с сокращёнными опциями для управления Caddy.

Команды для управления Caddy через Cadd

  • cadd e — откроет файл конфигурации Caddy (/etc/caddy/Caddyfile) в редакторе nano (можно заменить редактор на ваш любимый, если хотите).
  • cadd r — выполнит перезапуск сервиса Caddy.
  • cadd v — проверит валидность файла конфигурации Caddy.
  • cadd s — покажет текущий статус сервиса Caddy.
  • cadd l — выведет последние строки логов Caddy (по умолчанию 20).
  • cadd f — форматирует Caddyfile.
  • cadd h — выводит список доступных команд и справочную информацию.

Заключение

Создание утилиты Cadd значительно упростит процесс управления вашим сервером Caddy. Вместо того чтобы вводить длинные команды, вы можете использовать простые сокращения, что особенно полезно для администраторов, работающих с сервером на постоянной основе. Этот скрипт можно легко расширить, добавив новые функции в зависимости от ваших нужд.