【发布时间】:2020-11-20 02:52:46
【问题描述】:
我有一个运行 python3 脚本的 crontab 条目。这个 python 脚本使用一个 config.ini 文件来获取一些在脚本中使用的令牌。
crontab 条目是:
*/15 * * * * /usr/bin/python3 /opt/scripts/tf_state_backup/tf_state_backup.py >> ~/cron.out 2>&1
config.ini 文件有以下内容:
[terraform]
token = <base64 encoded API key>
[gitlab]
token = <base64 encoded API key>
python脚本的相关部分如下:
import configparser
## read config file and decode api keys
config = configparser.ConfigParser()
config.read(os.path.abspath('config.ini'))
tfc_token = base64.b64decode(config['terraform']['token']).decode('utf-8')
gitlab_token = base64.b64decode(config['gitlab']['token']).decode('utf-8')
当它运行时,我可以检查 cron.out 文件是否有任何错误。每次运行时都会出现以下错误。
SyntaxError: invalid syntax
Traceback (most recent call last):
File "/opt/scripts/tf_state_backup/tf_state_backup.py", line 17, in <module>
tfc_token = base64.b64decode(config['terraform']['token']).decode('utf-8')
File "/usr/lib64/python3.6/configparser.py", line 959, in __getitem__
raise KeyError(key)
KeyError: 'terraform'
我已经检查了以下内容:
- 确保脚本和配置具有正确的权限和 +x 权限
- 完全按照 cron 选项卡中的方式运行脚本,它运行良好,没有任何问题
- 确保 config.ini 被它的绝对路径引用,而不是相对路径
在这方面的任何帮助都会非常好。
【问题讨论】:
标签: python-3.x cron configparser