python实现定时任务下载release

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

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

使用schedule类库


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

截图

image-1653799952686

2.案例

实现步骤:


   
  1. 1.连接vpn
  2. 2.获取url地址
  3. 3.使用curl命令下载输出指定目录
  4. 4.断开vpn

   
  1. # coding=utf-8
  2. """
  3. 作者:gaojs
  4. 功能:
  5. 新增功能:
  6. schedule 是一个第三方轻量级的任务调度模块,可以按照秒,分,小时,日期或者自定义事件执行时间。
  7. schedule 允许用户使用简单、人性化的语法以预定的时间间隔定期运行 Python 函数(或其它可调用函数)
  8. demo如下:
  9. schedule.every(10).seconds.do(job)
  10. schedule.every(10).minutes.do(job)
  11. schedule.every().hour.do(job)
  12. schedule.every().day.at("10:30").do(job)
  13. schedule.every(5).to(10).minutes.do(job)
  14. schedule.every().monday.do(job)
  15. schedule.every().wednesday.at("13:15").do(job)
  16. schedule.every().minute.at(":17").do(job)
  17. 日期:2022/5/29 12:45
  18. blog: www.gaojs.com.cn
  19. """
  20. import os
  21. import schedule
  22. import time
  23. from schedule import every, repeat, run_pending
  24. from selenium import webdriver
  25. from selenium.webdriver.chrome.options import Options
  26. def conn_vpn():
  27. """
  28. 连接vpn
  29. """
  30. try:
  31. # 修改工作目录到
  32. os.chdir('C:\\Program Files\\Array Networks\\MotionPro VPN Client')
  33. os.system('MotionPro.exe -connect xxxxxxxx 443 uname passwd 0 0 0 1')
  34. time.sleep(10)
  35. finally:
  36. os.system('ping 10.x.x.x')
  37. pass
  38. def disconnect_vpn():
  39. """
  40. 断开vpn连接
  41. """
  42. # 修改工作目录到
  43. try:
  44. os.chdir('C:\\Program Files\\Array Networks\\MotionPro VPN Client')
  45. os.system('MotionPro.exe -disconnect')
  46. finally:
  47. os.system('ping 10.x.x.x')
  48. def mkdir_path():
  49. """
  50. 创建目录
  51. """
  52. if not os.path.exists('release/'):
  53. os.mkdir('release/')
  54. def download():
  55. """
  56. 自动下载release
  57. """
  58. print('*************************** 正在刷新新版本,请稍等 *******************************')
  59. conn_vpn()
  60. url = 'http://xxxxxxx.html'
  61. chrome_options = Options()
  62. chrome_options.add_argument('--headless')
  63. driver = webdriver.Chrome(options=chrome_options)
  64. time.sleep(5)
  65. driver.get(url)
  66. driver.maximize_window()
  67. try:
  68. element = driver.find_element_by_xpath(xpath='/html/body/blockquote[1]/a[1]').text
  69. release_url = element.split(' ')[0]
  70. print(release_url)
  71. # 分离url和文件名称
  72. release_name = os.path.split(release_url)[1]
  73. print(release_name)
  74. finally:
  75. # os.system(r'curl -o E:\panglu_test_59\release\ + %s %s' % (release_name, release_url))
  76. os.chdir('D:\\builds')
  77. if not os.path.exists('D:\\builds\\' + release_name):
  78. os.system(r'curl -o %s %s' % (release_name, release_url))
  79. driver.close()
  80. # 断开vpn连接
  81. disconnect_vpn()
  82. # 每隔一小时执行一次
  83. schedule.every().hours.do(download)
  84. while True:
  85. # 启动任务
  86. schedule.run_pending()
  87. time.sleep(1)

结果如下:

image-1653800026194

3.案例3–linux下配置


   
  1. #!/bin/bash
  2. # coding=utf-8
  3. """
  4. 作者:gaojs
  5. 功能:
  6. 新增功能:
  7. schedule 是一个第三方轻量级的任务调度模块,可以按照秒,分,小时,日期或者自定义事件执行时间。
  8. schedule 允许用户使用简单、人性化的语法以预定的时间间隔定期运行 Python 函数(或其它可调用函数)
  9. demo如下:
  10. schedule.every(10).seconds.do(job)
  11. schedule.every(10).minutes.do(job)
  12. schedule.every().hour.do(job)
  13. schedule.every().day.at("10:30").do(job)
  14. schedule.every(5).to(10).minutes.do(job)
  15. schedule.every().monday.do(job)
  16. schedule.every().wednesday.at("13:15").do(job)
  17. schedule.every().minute.at(":17").do(job)
  18. 日期:2022/5/29 12:45
  19. blog: www.gaojs.com.cn
  20. """
  21. import os
  22. import time
  23. from selenium import webdriver
  24. from selenium.webdriver import FirefoxOptions
  25. def conn_vpn():
  26. """
  27. 连接vpn
  28. """
  29. try:
  30. # 修改工作目录到
  31. os.system('iSecSP -h intranet.arraynetworks.com.cn -u gaojs -p Bigdata_2013')
  32. time.sleep(40)
  33. finally:
  34. pass
  35. def disconnect_vpn():
  36. """
  37. 断开vpn连接
  38. """
  39. # 修改工作目录到
  40. try:
  41. os.chdir('cd /opt/')
  42. os.system('iSecSP -s')
  43. finally:
  44. os.system('ping 10.3.0.120')
  45. def mkdir_path():
  46. """
  47. 创建目录
  48. """
  49. if not os.path.exists('/opt/builds/'):
  50. os.mkdir('/opt/builds/')
  51. def download():
  52. """
  53. 自动下载release
  54. """
  55. print('*************************** 正在刷新新版本,请稍等 *******************************')
  56. url = 'http://10.3.0.120/sp2/build/rel_netiag_10_0_4.html'
  57. opts = FirefoxOptions()
  58. opts.add_argument("--headless")
  59. driver = webdriver.Firefox(options=opts)
  60. time.sleep(5)
  61. driver.get(url)
  62. driver.maximize_window()
  63. print('downloading')
  64. try:
  65. element = driver.find_element_by_xpath(xpath='/html/body/blockquote[1]/a[1]').text
  66. release_url = element.split(' ')[0]
  67. print(release_url)
  68. # 分离url和文件名称
  69. release_name = os.path.split(release_url)[1]
  70. print(release_name)
  71. finally:
  72. os.chdir('/var/www/html/builds/netIAG/')
  73. if not os.path.exists('/var/www/html/builds/netIAG/' + release_name):
  74. os.system(r'curl -o %s %s' % (release_name, release_url))
  75. driver.close()
  76. # 断开vpn连接
  77. # disconnect_vpn()
  78. download()

jenkins任务

image-1653988313856

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

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


   
  1. #!/bin/bash
  2. # coding=utf-8
  3. """
  4. 作者:gaojs
  5. 功能:
  6. 新增功能:
  7. 日期:2022/7/11 14:29
  8. """
  9. import os.path
  10. import re
  11. import requests
  12. def get_release():
  13. """
  14. 正则匹配版本号
  15. """
  16. url = 'http://10.3.0.120/sp2/build/rel_netiag_10_0_4.html'
  17. resp = requests.get(url)
  18. # print(resp.text)
  19. 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]
  20. print(base_url)
  21. base_name = os.path.split(base_url)[1]
  22. os.chdir('/var/www/html/builds/netIAG/')
  23. if not os.path.exists('/var/www/html/builds/' + base_name):
  24. os.system(r'curl -o %s %s' % (base_name, base_url))
  25. print('*********************** 下载完成 **********************')
  26. if __name__ == '__main__':
  27. get_release()

4.遇到问题


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

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

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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