环境变量中的动态逻辑?

环境变量中的动态逻辑?

我经常通过 cURL 或 wget 等工具从 (Linux/bash) 命令行调用特定的远程服务器。此服务器需要每 10 分钟过期一次的身份验证令牌。我有一个可以生成新令牌的程序。

我想要的是一个环境变量 $TOKEN,我可以从命令行使用它,每 10 分钟刷新一次,或者更好的是,仅在需要时刷新一次,而且最多每 10 分钟刷新一次。

我希望有一种方法可以将环境变量的评估与可执行文件联系起来,这样我就可以使用脚本来实现这一点。如果做不到这一点,我想知道是否有办法设置一个后台进程,每 10 分钟更新一次环境变量。

答案1

您可以设置一个 cron 作业,每 10 分钟(或您想要的任何时间间隔)调用一次脚本。然后脚本更新变量。

看:linux:如何永久全局地更改环境变量

答案2

您可以创建一个别名来更新环境变量

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

或者

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

然后,只需运行“token”即可为当前会话设置该变量

您可以将其添加到您的 bash 配置文件中,这样别名在登录时仍然有效

答案3

存储两个环境变量,TOKENTOKEN_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 作业。令牌会按需刷新。

相关内容