Lógica dinâmica na variável de ambiente?

2

Eu invoco regularmente um servidor remoto específico de uma linha de comando (Linux / bash) através de ferramentas como cURL ou wget. Este servidor requer um token de autenticação que expira a cada 10 minutos. Eu tenho um programa que pode gerar um novo token.

O que eu gostaria é de uma variável de ambiente, $ TOKEN, que eu possa usar a partir da linha de comando, que se atualiza a cada 10 minutos, ou melhor ainda, se atualiza somente quando solicitado, e mesmo assim a cada 10 minutos mais.

Eu esperava que houvesse uma maneira de vincular a avaliação de uma variável de ambiente a um executável, permitindo que eu fizesse isso com um script. Falhando nisso, eu queria saber se talvez houvesse uma maneira de configurar um processo em segundo plano que atualizasse a variável de ambiente a cada 10 minutos.

    
por Brandon Yarbrough 25.09.2013 / 19:07

3 respostas

0

Você pode configurar um cron job que chame um script a cada 10 minutos (ou qualquer intervalo de tempo desejado). Então o script atualiza a variável.

Veja: linux: como permanentemente e alterar globalmente variáveis de ambiente

    
por 25.09.2013 / 19:17
0

você pode criar um alias para atualizar o env var

alias token='TOKEN=$(wget -q -O - http://webserver.com/TOKEN)'

or

alias token='TOKEN=$(/path/to/token-generator)'

então, simplesmente executando "token" irá definir esse var para a sessão atual

você pode adicionar ao seu perfil bash, então o alias permanece nos logins

    
por 25.09.2013 / 19:36
0

Armazene duas variáveis de ambiente, TOKEN e 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.

Desta forma, você não precisa armazenar lógica em uma variável de ambiente [ew] ou configurar um cron job. O token é atualizado sob demanda.

    
por 25.09.2013 / 20:21