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)
截图
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)
结果如下:
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任务
每日晚上十点定时更新最新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的权限的问题