python实现定时任务下载release

举报
建帅小伙儿 发表于 2022/09/25 03:25:22 2022/09/25
3.7k+ 0 0
【摘要】 1.python实现自动任务下载某产品版本 使用schedule类库 介绍: schedule 是一个第三方轻量级的任务调度模块,可以按照秒,分,小时,日期或者自定义事件执行时间。 schedule 允许用户使用简单、人性化的语法以预定的时间间隔定期运行 Python 函数(或其...

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-1653799952686

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-1653800026194

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-1653988313856

每日晚上十点定时更新最新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()
   
  

4.遇到问题


       1.ubuntu部署jenkins
       2.创建任务,定时任务配置
       3.调试问题解决
       4.调试通过
       5.一定要注意ubuntu下jenkins的权限的问题
   
  

文章来源: blog.csdn.net,作者:懿曲折扇情,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_41332844/article/details/126837425

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。