Я регулярно вызываю конкретный удаленный сервер из командной строки (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: как постоянно и глобально изменять переменные среды