Скрипт для добавления глобальных переменных сервера

Цель данного скрипта — легко, при помощи одной команды добавлять новые глобальные переменные в конфигурацию сервера. Данный скрипт является частью системы для автоматической конфигурации сервера.

Основные этапы:

  1. Проверяем, что в параметрах запуска скрипта указано имя и значение переменной. Если нет, завершаем скрипт.
  2. Проверяем, существует ли файл /etc/environment. Если нет, создаем его.
  3. Проверяем, существует ли уже переменная в /etc/environment. Если да, обновляем ее, а если нет, создаем.
  4. Экспортируем переменную окружения, делая ее доступной для всех дочерних процессов, которые запускаются из текущей сессии оболочки.

Полный код скрипта приведен ниже:

Bash
#!/bin/bash

if [ "$(id -u)" != "0" ]; then
    echo -e "\033[31mThis script requires superuser rights.\033[0m"
    exit 0
fi

if [ -z "$1" ] || [ -z "$2" ]; then
  echo "Please provide both the VAR_NAME and VAR_VALUE as arguments."
  exit 1
fi

trap 'echo -e "\033[31mSomething went wrong\033[0m"; exit 1' ERR
set -e

export DEBIAN_FRONTEND=noninteractive

ENV_VAR_NAME=$1
ENV_VAR_VALUE=$2

# Create a file if it does not exist
if [ ! -f /etc/environment ]; then
    touch /etc/environment
fi

# Checking if a variable already exists
if grep -q "^${ENV_VAR_NAME}=" /etc/environment; then
    # If the variable exists, update its value
    sed -i "s/^${ENV_VAR_NAME}=.*/${ENV_VAR_NAME}=${ENV_VAR_VALUE}/" /etc/environment
else
    # If the variable does not exist, add it
    echo "${ENV_VAR_NAME}=${ENV_VAR_VALUE}" | tee -a /etc/environment
fi

export "${ENV_VAR_NAME}=${ENV_VAR_VALUE}"

trap - ERR
echo "Environment variable ${ENV_VAR_NAME} set to:"
printenv "${ENV_VAR_NAME}"


Данный скрипт является частью нашего репозитория utils.



Если вам интересен наш проект, есть вопросы, замечания, или предложения — оставляйте комментарии или пишите на почту: checkerwars@mail.ru

Кроме того, автор проекта ищет работу. Мое резюме.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *