前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Readfree 自动签到 & crontab自动任务踩坑

Readfree 自动签到 & crontab自动任务踩坑

作者头像
Ewdager
发布2020-07-14 14:52:42
6590
发布2020-07-14 14:52:42
举报
文章被收录于专栏:Gvoidy备份小站Gvoidy备份小站

自动签到 Python 脚本

这部分没什么难度,主要是这个网站的cookiesMax-Age31449600秒,大概1年的寿命,所以直接将存好的cookiesrequests发一个get请求到验证地址就行。稍微修改了博主杨英明代码如下:

代码语言:javascript
复制
import requests
import time

# 登录验证地址
check_url = 'http://readfree.me/accounts/checkin'

# 记录程序运行时的时间
fp = open('./auto_signon_readfree.log','a')
ISOTIMEFORMAT='%Y-%m-%d %X'
curtime = time.strftime(ISOTIMEFORMAT, time.localtime(time.time()))
print ('at %s'%curtime)
fp.write('at %s\n'%curtime)

# 准备cookie
print ('准备cookie中……')
fp.write('准备cookie中……\n')
cookie_str = 'cookies here'
cookie = {}
for line in cookie_str.split(';'):
    name,value=line.strip().split('=',1)
    cookie[name]=value
print (cookie)
fp.write('%s\n'%cookie)

# 使用cookie访问网站
print ('签到中……')
fp.write('签到中……\n')
res = requests.get(check_url,cookies=cookie)
print (res)
fp.write('%s\n\n'%res)

crontab 自动任务

这一步确实是踩了不少坑,还是Linux知识太欠缺了。

几次失败

  1. 直接在crontab -e中加入指令0 1 * * * python3 ~/autoSign/autoSign_readfree/py不执行
  2. 更换python3绝对路径后依旧不执行
  3. 查看crontablog发现文件不存在
  4. .py文件头部添加#!/usr/bin/env python3报错env: python\r: No such file or directory

几次尝试

  1. 1-2 几次修改后依旧无果,在尝试2的后依旧不执行,考虑用新自动任务输出hello到log检测crontab是否出错,发现crontab能正常运行,随后考虑修复3问题
  2. 经查询发现crontab是默认不开启log功能的,解决方法如下: 修改rsyslog服务,将 /etc/rsyslog.d/50-default.conf 文件中的 #cron.* 前的 #删掉,再使用service rsyslog restart;重启rsyslog服务
  3. 查询log文件发现.py依旧不执行,只能剑走偏锋不直接在crontab中使用python3命令,遂使用4在python文件头部添加#!/usr/bin/env python3crontab以类似运行.sh文件的形式打开.py。 在使用chmod a+x autoSign_readfree.py修改权限后报错env: python\r: No such file or directory 参考stackoverflow发现是脚本包含CR字符。shell将这些CR字符解释为参数。使用以下脚本去除CR字符: with open('autoSign_readfree.py', 'rb+') as f: content = f.read() f.seek(0) f.write(content.replace(b'\r', b'')) f.truncate() 成功! 最后在crontab中添加命令0 1 * * * ./autoSign_readfree.py大功告成!(据说每条命令必须换行才能执行)

补充几个crontab小知识

  1. 添加crontab任务 crontab -e
  2. 查看crontab任务 crontab -l
  3. 使用实例
代码语言:javascript
复制
0 2 * * * /bin/sh backup.sh                                   //每天 02:00 执行任务
0 5,17 * * * /scripts/script.sh                               //每天 5:00和17:00执行任务
* * * * *  /scripts/script.sh                                 //每分钟执行一次任务
0 17 * * sun  /scripts/script.sh                              //每周日 17:00 执行任务
*/10 * * * * /scripts/monitor.sh                              //每 10min 执行一次任务
* * * jan,may,aug * /script/script.sh                         //在特定的某几个月执行任务
0 17 * * sun,fri /script/scripy.sh                            //在特定的某几天执行任务
0 2 * * sun  [ $(date +%d) -le 07 ] && /script/script.sh      //在某个月的第一个周日执行任务
* * * * *  sleep 30; /scripts/script.sh                       //每个30秒执行一次任务
* * * * * /scripts/script.sh; /scripts/scrit2.sh              //多个任务在一条命令中配置
@reboot /scripts/script.sh                                    //系统重启时执行
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 自动签到 Python 脚本
  • crontab 自动任务
    • 几次失败
      • 几次尝试
      • 补充几个crontab小知识
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档