Назад | Перейти на главную страницу

Динамическая логика в переменной окружения?

Я регулярно вызываю конкретный удаленный сервер из командной строки (Linux / bash) с помощью таких инструментов, как cURL или wget. Для этого сервера требуется токен аутентификации, срок действия которого истекает каждые 10 минут. У меня есть программа, которая может генерировать новый токен.

Мне бы хотелось, чтобы переменная среды $ TOKEN, которую я мог использовать из командной строки, обновлялась каждые 10 минут или, что еще лучше, обновлялась только по запросу, и даже тогда не чаще, чем каждые 10 минут.

Я надеялся, что есть способ связать оценку переменной среды с исполняемым файлом, что позволит мне сделать это с помощью сценария. В противном случае мне было интересно, есть ли способ настроить фоновый процесс, который обновлял бы переменную среды каждые 10 минут.

Сохраните две переменные среды, TOKEN и TOKEN_TIMESTAMP.

if [ $(($(date +%s) - $TOKEN_TIMESTAMP)) -ge 600 ]; then
  /script/to/update/token.sh
  TOKEN_TIMESTAMP=$(date +%s) # this should be in the above script.
fi

/script/that/uses/token.sh # everything could be in this one script.

Таким образом, вам не нужно хранить логику в переменной среды [ew] или настраивать задание cron. Токен обновляется по запросу.

вы можете создать псевдоним для обновления env var

псевдоним токен = 'ТОКЕН = $ (wget -q -O - http://webserver.com/TOKEN) '

или

псевдоним токен = 'ТОКЕН = $ (/ путь / к / генератору токенов)'

тогда простой запуск "токена" установит эту переменную для текущего сеанса

вы можете добавить в свой профиль bash, чтобы псевдоним оставался при входе в систему

Вы можете настроить задание cron, которое вызывает скрипт каждые 10 минут (или любой другой временной интервал, который вы хотите). Затем скрипт обновляет переменную.

Видеть: linux: как постоянно и глобально изменять переменные среды