# 思路
本来想的是使用 post 请求简化更新流程的,但是他用了 rsa 加密密码,加密后的密文还不一样,懒得去找加密源码了(
所以就直接用 python 的 selenium 库了,抓包找到相关更新链接,模拟人工打开网页登录并进行链接更新等操作。
在测试修 bug 之后放到服务器上挂着,尝试自动化。
# 感谢 ChatGPT!
在写好了单次运行的 python 脚本之后,在尝试 cron
自动化总碰壁,一直实现不了。是环境初始化的问题。ChatGPT 给出了很好的答案。
27 5 * * 7 /bin/bash -c 'source /root/my_serve/update_iconfont_url/start.sh' >> /root/my_serve/update_iconfont_url/crontab.log 2>&1 | |
00 0 * * 4 /bin/bash -c 'source /root/my_serve/update_iconfont_url/start.sh' >> /root/my_serve/update_iconfont_url/crontab.log 2>&1 |
以下内容均为ChatGPT给出。
脚本路径:确保您的脚本中使用的所有相对路径在 cron
的执行环境中是有效的。 cron
作业通常以用户的主目录为工作目录。
鉴于这些考虑,您需要对脚本做出一些修改来保证它在 cron
中能够正确运行。这是一个修改后的脚本示例:
#!/bin/bash | |
# 加载 acme.sh 环境变量 | |
. "/root/.acme.sh/acme.sh.env" | |
# 扩展 PATH 环境变量 | |
export PATH="$PATH:/root/.local/bin" | |
# 手动初始化 Conda 环境 | |
__conda_setup="$('/root/.apps/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)" | |
if [ $? -eq 0 ]; then | |
eval "$__conda_setup" | |
else | |
if [ -f "/root/.apps/anaconda3/etc/profile.d/conda.sh" ]; then | |
. "/root/.apps/anaconda3/etc/profile.d/conda.sh" | |
else | |
export PATH="/root/.apps/anaconda3/bin:$PATH" | |
fi | |
fi | |
unset __conda_setup | |
# 激活 Conda 环境 | |
conda activate py311 | |
# 运行 Python 脚本 | |
cd /root/my_serve/update_iconfont_url | |
python update_Iconfont_share_link.py |
保存这个脚本,并给予它执行权限:
chmod +x /path/to/your_script.sh |
然后在 crontab
中添加一条新的作业来运行它。打开 crontab
配置文件:
crontab -e |
添加以下行(示例为每天凌晨 1 点运行):
0 1 * * * /path/to/your_script.sh |
请确保将 /path/to/your_script.sh
替换为您的脚本实际的路径。
这样,您的脚本应该能够在 cron
作业中正确执行。