Linux下使用Python实现定时push到github
来源:互联网 发布:淘宝被发现虚假交易 编辑:程序博客网 时间:2024/06/10 14:20
Linux下使用Python实现定时push到github
把大象装进冰箱总共分两步:
- 1、写一个python脚本,使它能够执行git push
- 2、定时运行上面的python脚本
1、写一个python脚本,使它能够执行git push
首先来看看python如何执行命令,以git status为例
cmd.py
#!/usr/bin/env pythonimport subprocesssubprocess.call(["git", "status"])
执行python cmd.py,相当于执行了git status
既然git status能执行,那么git add 和git push等命令应该也能执行。但是在push时,需要输入用户名和密码,所以需要我们设置免用户名密码。
这一步骤可以参考:
https://segmentfault.com/a/1190000008435592
附加:linux设置免用户名和密码使用git push
0、在一切操作之前,我们先把git与远程仓库的连接方式由https改为ssh,参考
https://git-scm.com/book/zh/v1/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-%E7%94%9F%E6%88%90-SSH-%E5%85%AC%E9%92%A5
使用下面的命令查看公钥
cat ~/.ssh/id_ras.pub
公钥一般张成这个样子:
$ cat ~/.ssh/id_rsa.pubssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSUGPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XAt3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/EnmZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbxNrRFi9wrf+M7Q== schacon@agadorlaptop.local
然后把公钥公钥部署在github上,在下面这个页面中,添加公钥~
1、在/home/username/ 目录下新建一个文本文件,要用touch命令
touch .git-credentials
2、然后在这个文件中输入以下内容:https:{username}:{password}@github.com
{username}和{password}是用户名和密码,比如我的就是:https:lijialin:123456@github.com
3、修改git配置,执行命令:
git config --global crediential.helper store
这个命令会在.gitconfig文件中添加如下配置:
经过上面的步骤,我们再次push时就不用输入用户名和密码了
设置完git免用户名和密码后,我们修改python代码如下:
cmd.py
#!/usr/bin/env pythonimport subprocessimport datetimesubprocess.call(["git", "add", "."])subprocess.call(["git", "commit", "-m", "auto push at " + str(datetime.datetime.now())]) # 加上当前系统的时间subprocess.call(["git", "push"])
然后执行python cmd.py,发现push被成功的执行了,同时我们也不用输入用户名和密码,在github上也能看到push的时间了,高兴~
2、定时执行上面的代码
现在我们完成了第一步,已经能够使用python执行git push了。接下来,我们要写一个脚本,使之能够定时执行cmd.py。
所谓定时执行,就是周期性地执行,需要用到Linux下的任务调度进程:crond
crond会定期检查是否有要执行的任务,如果有则自动执行该任务。
如果要执行我们的任务,比如数据备份、邮件提醒等,需要使用crontab工具,Linux下默认安装此服务工具。
我们自定义的crontab文件保存在/var/spool/cron/crontabs/目录下。
在该目录下,使用下面的命令新建一个定时任务(选择vim)
crontab -e
定时任务的格式如下:
minute hour day month week command
前几项表示时间,command表示要执行的命令。
比如我们要,每天凌晨2:00:00执行cmd.py,则加入如下代码:
0 2 * * * python /home/lijialin/Desktop/autopush/cmd.py
有关crontab的命令格式,可见
http://blog.csdn.net/chenggong2dm/article/details/12649053
http://www.cnblogs.com/intval/p/5763929.html
为了测试需要,我写了一段python代码,这个代码能够向 test.txt 文件中写入当前的时间,然后设置定时任务,每隔1分钟执行一次
test.py
#!/usr/bin/env python# -*- coding: utf-8 -*-import datetimedef write_file(file): with open(file, 'a') as f: f.write(str(datetime.datetime.now()) + '\n') f.close()file = 'test.txt'write_file(file)
在crontab中添加:
*/1 * * * * cd /home/lijialin/Desktop/autopush;python test.py
接下来去喝杯咖啡,5分钟后回来看看效果~
可能遇到的问题:
由于环境变量的关系,不同的用户、不同的目录都可能导致python运行异常。我们的服务器上往往有多个版本的python,在有的目录下某个版本的python能正常运行,有的目录下则不能,所以在crontab定义周期性任务时,首先通过cd进入相应的目录,然后再执行python脚本~
其他参考:
http://blog.csdn.net/suibianshen2012/article/details/64124191
补充:我按照上面的方法,写了一段python代码,然后部署到阿里云的服务器上,结果证明这种方法是可行的。
注:本文作者是Linux小白一枚,有错误的地方还请您帮忙纠正,谢谢~
就这样,拜拜~~
- Linux下使用Python实现定时push到github
- 在Linux Mint13下用Eclipse push代码到github
- git&github 使用git将本地项目push到github
- windows下如何将本地项目push到github仓库
- Linux下 GitHub使用
- linux下github使用
- Linux下github使用
- Linux下使用GitHub
- Linux下使用github
- 使用git push到github时有大文件的错误
- 【python linux下定时任务跑】crontab -e使用
- Mac OS下使用SourceTree Push到Github时出现 POST git-receive-pack (chunked) 的解决办法
- git push项目到github
- 将工程push到github
- Linux下定时的实现
- linux下,实现定时功能
- Github创建项目并使用git将本地项目push到github
- Github创建项目并使用git将本地项目push到github
- 兼容性编程经验
- 学习笔记-微信授权登录
- PHP 数组排序
- oracle 数据库创建表
- 通过java语言去LDAP检索信息
- Linux下使用Python实现定时push到github
- 正则表达式和python re模块
- 部件MSCOMCTL.OCX或其附件之一不能正确注册:一个文件丢失或无效
- Java反射机制浅析
- pycharm破解方法
- oracle字段自动增长设置
- Farm Irrigation
- 一只小蜜蜂... 递推
- ACM HRBUST