python实现定时任务下载release

简介: python实现定时任务下载release

1.python实现自动任务下载某产品版本

使用schedule类库

  介绍:
            schedule 是一个第三方轻量级的任务调度模块,可以按照秒,分,小时,日期或者自定义事件执行时间。
            schedule 允许用户使用简单、人性化的语法以预定的时间间隔定期运行 Python 函数(或其它可调用函数)
        定时任务格式如下:
            schedule.every(10).seconds.do(job)
            schedule.every(10).minutes.do(job)
            schedule.every().hour.do(job)
            schedule.every().day.at("10:30").do(job)
            schedule.every(5).to(10).minutes.do(job)
            schedule.every().monday.do(job)
            schedule.every().wednesday.at("13:15").do(job)
            schedule.every().minute.at(":17").do(job)

截图

image.png

2.案例

实现步骤:

1.连接vpn
2.获取url地址
3.使用curl命令下载输出指定目录
4.断开vpn
# coding=utf-8
"""
    作者:gaojs
    功能:
    新增功能:
            schedule 是一个第三方轻量级的任务调度模块,可以按照秒,分,小时,日期或者自定义事件执行时间。
            schedule 允许用户使用简单、人性化的语法以预定的时间间隔定期运行 Python 函数(或其它可调用函数)
        demo如下:
            schedule.every(10).seconds.do(job)
            schedule.every(10).minutes.do(job)
            schedule.every().hour.do(job)
            schedule.every().day.at("10:30").do(job)
            schedule.every(5).to(10).minutes.do(job)
            schedule.every().monday.do(job)
            schedule.every().wednesday.at("13:15").do(job)
            schedule.every().minute.at(":17").do(job)
    日期:2022/5/29 12:45
    blog: www.gaojs.com.cn
"""
import os
import schedule
import time
from schedule import every, repeat, run_pending
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
def conn_vpn():
    """
    连接vpn
    """
    try:
        # 修改工作目录到
        os.chdir('C:\\Program Files\\Array Networks\\MotionPro VPN Client')
        os.system('MotionPro.exe -connect xxxxxxxx 443 uname passwd 0 0 0 1')
        time.sleep(10)
    finally:
        os.system('ping 10.x.x.x')
        pass
def disconnect_vpn():
    """
    断开vpn连接
    """
    # 修改工作目录到
    try:
        os.chdir('C:\\Program Files\\Array Networks\\MotionPro VPN Client')
        os.system('MotionPro.exe -disconnect')
    finally:
        os.system('ping 10.x.x.x')
def mkdir_path():
    """
    创建目录
    """
    if not os.path.exists('release/'):
        os.mkdir('release/')
def download():
    """
    自动下载release
    """
    print('*************************** 正在刷新新版本,请稍等 *******************************')
    conn_vpn()
    url = 'http://xxxxxxx.html'
    chrome_options = Options()
    chrome_options.add_argument('--headless')
    driver = webdriver.Chrome(options=chrome_options)
    time.sleep(5)
    driver.get(url)
    driver.maximize_window()
    try:
        element = driver.find_element_by_xpath(xpath='/html/body/blockquote[1]/a[1]').text
        release_url = element.split(' ')[0]
        print(release_url)
        # 分离url和文件名称
        release_name = os.path.split(release_url)[1]
        print(release_name)
    finally:
        # os.system(r'curl -o E:\panglu_test_59\release\ + %s  %s' % (release_name, release_url))
        os.chdir('D:\\builds')
        if not os.path.exists('D:\\builds\\' + release_name):
            os.system(r'curl -o %s  %s' % (release_name, release_url))
    driver.close()
    # 断开vpn连接
    disconnect_vpn()
# 每隔一小时执行一次
schedule.every().hours.do(download)
while True:
  # 启动任务
    schedule.run_pending()
    time.sleep(1)

结果如下:

image.png

3.案例3–linux下配置

#!/bin/bash
# coding=utf-8
"""
    作者:gaojs
    功能:
    新增功能:
            schedule 是一个第三方轻量级的任务调度模块,可以按照秒,分,小时,日期或者自定义事件执行时间。
            schedule 允许用户使用简单、人性化的语法以预定的时间间隔定期运行 Python 函数(或其它可调用函数)
        demo如下:
            schedule.every(10).seconds.do(job)
            schedule.every(10).minutes.do(job)
            schedule.every().hour.do(job)
            schedule.every().day.at("10:30").do(job)
            schedule.every(5).to(10).minutes.do(job)
            schedule.every().monday.do(job)
            schedule.every().wednesday.at("13:15").do(job)
            schedule.every().minute.at(":17").do(job)
    日期:2022/5/29 12:45
    blog: www.gaojs.com.cn
"""
import os
import time
from selenium import webdriver
from selenium.webdriver import FirefoxOptions
def conn_vpn():
    """
    连接vpn
    """
    try:
        # 修改工作目录到
        os.system('iSecSP -h intranet.arraynetworks.com.cn -u gaojs -p  Bigdata_2013')
        time.sleep(40)
    finally:
        pass
def disconnect_vpn():
    """
    断开vpn连接
    """
    # 修改工作目录到
    try:
        os.chdir('cd /opt/')
        os.system('iSecSP -s')
    finally:
        os.system('ping 10.3.0.120')
def mkdir_path():
    """
    创建目录
    """
    if not os.path.exists('/opt/builds/'):
        os.mkdir('/opt/builds/')
def download():
    """
    自动下载release
    """
    print('*************************** 正在刷新新版本,请稍等 *******************************')
    url = 'http://10.3.0.120/sp2/build/rel_netiag_10_0_4.html'
    opts = FirefoxOptions()
    opts.add_argument("--headless")
    driver = webdriver.Firefox(options=opts)
    time.sleep(5)
    driver.get(url)
    driver.maximize_window()
    print('downloading')
    try:
        element = driver.find_element_by_xpath(xpath='/html/body/blockquote[1]/a[1]').text
        release_url = element.split(' ')[0]
        print(release_url)
        # 分离url和文件名称
        release_name = os.path.split(release_url)[1]
        print(release_name)
    finally:
        os.chdir('/var/www/html/builds/netIAG/')
        if not os.path.exists('/var/www/html/builds/netIAG/' + release_name):
            os.system(r'curl -o %s  %s' % (release_name, release_url))
    driver.close()
    # 断开vpn连接
    # disconnect_vpn()
download()

jenkins任务

image.png

每日晚上十点定时更新最新build


正则匹配去实现下载操作:

#!/bin/bash
# coding=utf-8
"""
    作者:gaojs
    功能:
    新增功能:
    日期:2022/7/11 14:29
"""
import os.path
import re
import requests
def get_release():
    """
    正则匹配版本号
    """
    url = 'http://10.3.0.120/sp2/build/rel_netiag_10_0_4.html'
    resp = requests.get(url)
    # print(resp.text)
    base_url = re.findall(r'http:\/\/10\.3\.0\.120\/sp2\/build\/nodebug-Rel_NetIAG_[0-9]_[0-9]_[0-9]_[0-9]\.click', resp.text)[0]
    print(base_url)
    base_name = os.path.split(base_url)[1]
    os.chdir('/var/www/html/builds/netIAG/')
    if not os.path.exists('/var/www/html/builds/' + base_name):
        os.system(r'curl -o %s  %s' % (base_name, base_url))
    print('*********************** 下载完成 **********************')
if __name__ == '__main__':
    get_release()
#!/bin/bash
# coding=utf-8
"""
    作者:gaojs
    功能:
    新增功能:
    日期:2022/7/11 14:29
"""
import os.path
import re
import requests
def get_release():
    """
    正则匹配版本号
    """
    url = 'http://10.3.0.120/sp2/build/rel_netiag_10_0_4.html'
    resp = requests.get(url)
    # print(resp.text)
    base_url = re.findall(r'http:\/\/10\.3\.0\.120\/sp2\/build\/nodebug-Rel_NetIAG_[0-9]_[0-9]_[0-9]_[0-9]\.click', resp.text)[0]
    print(base_url)
    base_name = os.path.split(base_url)[1]
    os.chdir('/var/www/html/builds/netIAG/')
    if not os.path.exists('/var/www/html/builds/' + base_name):
        os.system(r'curl -o %s  %s' % (base_name, base_url))
    print('*********************** 下载完成 **********************')
if __name__ == '__main__':
    get_release()

4.遇到问题

1.ubuntu部署jenkins
2.创建任务,定时任务配置
3.调试问题解决
4.调试通过
5.一定要注意ubuntu下jenkins的权限的问题
目录
打赏
0
0
1
0
3334
分享
相关文章
Python/Anaconda双方案加持!Jupyter Notebook全平台下载教程来袭
Jupyter Notebook 是一款交互式编程与数据科学分析工具,支持40多种编程语言,广泛应用于机器学习、数据清洗和学术研究。其核心优势包括实时执行代码片段、支持Markdown文档与LaTeX公式混排,并可导出HTML/PDF/幻灯片等格式。本文详细介绍了Jupyter Notebook的软件定位、特性、安装方案(Anaconda集成环境与原生Python+PIP安装)、首次运行配置及常见问题解决方案,帮助用户快速上手并高效使用该工具。
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
158 13
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
154 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
138 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
270 34
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
> python知识点100篇系列(19)-使用python下载文件的几种方式
【10月更文挑战第7天】本文介绍了使用Python下载文件的五种方法,包括使用requests、wget、线程池、urllib3和asyncio模块。每种方法适用于不同的场景,如单文件下载、多文件并发下载等,提供了丰富的选择。
153 1
python知识点100篇系列(18)-解析m3u8文件的下载视频
【10月更文挑战第6天】m3u8是苹果公司推出的一种视频播放标准,采用UTF-8编码,主要用于记录视频的网络地址。HLS(Http Live Streaming)是苹果公司提出的一种基于HTTP的流媒体传输协议,通过m3u8索引文件按序访问ts文件,实现音视频播放。本文介绍了如何通过浏览器找到m3u8文件,解析m3u8文件获取ts文件地址,下载ts文件并解密(如有必要),最后使用ffmpeg合并ts文件为mp4文件。
351 1
|
9月前
|
Python 三方库下载安装
Python 三方库下载安装
114 1
pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)
这篇文章是关于如何下载、安装和配置Miniconda,以及如何使用Miniconda创建和管理Python环境的详细指南。
2413 0
pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问