我经常通过 cURL 或 wget 等工具从 (Linux/bash) 命令行调用特定的远程服务器。此服务器需要每 10 分钟过期一次的身份验证令牌。我有一个可以生成新令牌的程序。
我想要的是一个环境变量 $TOKEN,我可以从命令行使用它,每 10 分钟刷新一次,或者更好的是,仅在需要时刷新一次,而且最多每 10 分钟刷新一次。
我希望有一种方法可以将环境变量的评估与可执行文件联系起来,这样我就可以使用脚本来实现这一点。如果做不到这一点,我想知道是否有办法设置一个后台进程,每 10 分钟更新一次环境变量。
答案1
您可以设置一个 cron 作业,每 10 分钟(或您想要的任何时间间隔)调用一次脚本。然后脚本更新变量。
答案2
您可以创建一个别名来更新环境变量
别名 token='TOKEN=$(wget -q -O -http://webserver.com/TOKEN)'
或者
别名 token='TOKEN=$(/path/to/token-generator)'
然后,只需运行“token”即可为当前会话设置该变量
您可以将其添加到您的 bash 配置文件中,这样别名在登录时仍然有效
答案3
存储两个环境变量,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 作业。令牌会按需刷新。