通过Python脚本git pull 自动重试拉取代码
文章目录
- 1.需求
- 2.脚本
- 3.执行脚本
1.需求
由于网络等原因,拉取GitHub 仓库代码失败, 自动重试拉取
技术: 采用 pexpect 包
2.脚本
retry_pull.py
# -*- coding: utf-8 -*-
#!/usr/bin/python3"""
pip3 install pexpect
"""import pexpect
import os
import sysj = 1
def main():global jprint('invoke main %s' % j)j = j + 1username = 'infuq'password = 'qwert#123'# 进入到仓库目录os.chdir('/mnt/d/Repository/infuq-others')# 执行拉取spawner = pexpect.spawn('git pull')try:i = spawner.expect(['Username'])if i == 0:print('input username: ', username)# 输入用户名spawner.sendline(username)i = spawner.expect(['Password'])if i == 0:print('input password: ', password)# 输入密码spawner.sendline(password)spawner.expect(pexpect.EOF)print(spawner.before.decode().strip())else:# 未出现输入密码的提示, 重试main()else:# 未出现输入用户名的提示, 重试main()except Exception as e:# 出现异常, 重试main()if __name__ == '__main__':main()
3.执行脚本
[infuq tmp]# python3 retry_pull.py
invoke main 1
invoke main 2
invoke main 3
invoke main 4
invoke main 5
invoke main 6
invoke main 7
invoke main 8
invoke main 9
invoke main 10
input username: infuq
input password: qwert#123
for 'https://infuq@github.com':
Already up to date.
自动重试了 10 次, 拉取成功