Установка envs или глобальных переменных в скрипте bash [НЕ Дубликат] - PullRequest
0 голосов
/ 23 апреля 2020

Я ищу способ (желательно кросс-платформенный, совместимый) для установки чего-то глобально доступного из сценария bash.

Моя компания использует сценарий bash для запроса учетных данных доступа к mysql база данных. Это возвращает имя пользователя, пароль и домен базы данных, которые мне приходится копировать вставить в моем терминале, чтобы запустить и подключиться к нашему mysql db.

Я думал, что я исправлю скрипт, чтобы установить переменные среды и сделать Использование их в псевдониме с учетными данными, установленными в моем bashr c, но оказывается, что вы не можете установить переменные окружения в bash сценарии.

Поэтому я попытался установить псевдоним mysql с пароль пользователя и домен предварительно заполнены в том же скрипте, но с той же проблемой. Невозможно установить псевдоним в сценарии bash.

Я по сути хочу иметь возможность запустить сценарий, который дает мне учетные данные, а затем не нужно выполнять ручное копирование копии везде.

Я попытался (если это даст больше контекста):

#!/bin/bash
# Script gets the credentials
# Script now has username, password, endpoint variables
export MYSQL_USER=$username
export MYSQL_PASSWORD=$password
export MYSQL_ENDPOINT=$endpoint
# Script finishes

и в моем bashr c:

alias mysqlenv="mysql -h $MYSQL_ENDPOINT -u $MYSQL_USER -p'$MYSQL_PASSWORD'"

Я понимаю, что это не работает, и что Возможно, это не лучшее решение, поэтому я открыт для других возможностей.

PS: забыл упомянуть, что срок действия учетных данных истекает каждые 24 часа, поэтому я хочу сгладить процесс

PS2: я могу не получайте сценарий, который дает мне учетные данные, потому что он не просто экспортирует переменные среды, он берет параметры из Cli и заставляет меня войти в систему моей компании в моем браузере и т. д. c.

PS3 Я знаю, что ввод пароля для mysql в командной строке - плохая практика, но это не проблема, так как этот пароль печатается там в первую очередь скриптом, который дает мне учетные данные (написанные кем-то еще в компания)

1 Ответ

1 голос
/ 23 апреля 2020

Поскольку вы уже можете анализировать учетные данные, я бы использовал ваш код awk для вывода команд оболочки :

getMysqlCredentials() {
    credential_script.sh | awk '
        {parse the output}
        END {
            printf "local MYSQL_USER=\"%s\"\n", username
            printf "local MYSQL_PASSWORD=\"%s\"\n", password
            printf "local MYSQL_ENDPOINT=\"%s\"\n", endpoint
        }
    '
}

, тогда у меня была бы функция-обертка вокруг mysql где вы вызываете эту функцию и источник вывода

mysql() {
    source <(getMysqlCredentials)
    command mysql -h "$MYSQL_ENDPOINT" -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" "$@"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...