|
| 1 | +#!/usr/bin/python |
| 2 | +# -*- coding: UTF-8 -*- |
| 3 | +#coding=utf-8 |
| 4 | +#coding: utf-8 |
| 5 | + |
| 6 | +import sys,os |
| 7 | +from datetime import datetime |
| 8 | +import urllib.parse,urllib.request,http.cookiejar |
| 9 | +from ntlm import HTTPNtlmAuthHandler |
| 10 | +from tkinter import * |
| 11 | +import tkinter.messagebox |
| 12 | + |
| 13 | +class MainWindow: |
| 14 | + |
| 15 | + def __init__(self): |
| 16 | + self.frame = Tk() |
| 17 | + |
| 18 | + self.label_id = Label(self.frame,text = "USER :",width=10) |
| 19 | + self.label_pwd = Label(self.frame,text = "PWD :",width=10) |
| 20 | + self.label_jira = Label(self.frame,text = "JIRA url :",width=10) |
| 21 | + self.label_dts = Label(self.frame,text = "DTS url :",width=10) |
| 22 | + |
| 23 | + self.label_id.grid(row = 0,column = 0) |
| 24 | + self.label_pwd.grid(row = 1,column = 0) |
| 25 | + self.label_jira.grid(row = 2,column = 0) |
| 26 | + self.label_dts.grid(row = 3,column = 0) |
| 27 | + |
| 28 | + self.text_id = Entry(self.frame,width=40) |
| 29 | + self.text_pwd = Entry(self.frame,width=40) |
| 30 | + self.text_jira = Entry(self.frame,width=40) |
| 31 | + self.text_dts = Entry(self.frame,width=40) |
| 32 | + |
| 33 | + self.text_id.grid(row = 0,column = 1) |
| 34 | + self.text_pwd.grid(row = 1,column = 1) |
| 35 | + self.text_jira.grid(row = 2,column = 1) |
| 36 | + self.text_dts.grid(row = 3,column = 1) |
| 37 | + |
| 38 | + self.button_ok = Button(self.frame,text = "ok",width = 40) |
| 39 | + self.button_ok.grid(row = 4,column = 1) |
| 40 | + self.button_ok.bind("<ButtonRelease-1>",self.ok) |
| 41 | + |
| 42 | + self.frame.title('JIRA DTS Handle') |
| 43 | + self.frame.mainloop() |
| 44 | + |
| 45 | + |
| 46 | + def ok(self,event): |
| 47 | + path_dir= os.getcwd() |
| 48 | + i_id = self.text_id.get() or ' null ' |
| 49 | + i_pwd = self.text_pwd.get() or ' null ' |
| 50 | + i_jira = self.text_jira.get() or r'http://hisi-jira-pfm/sr/jira.issueviews:searchrequest-excel-current-fields/14302/SearchRequest-14302.xls?tempMax=10000&useColumns=true' |
| 51 | + i_dts = self.text_dts.get() or r'http://dts.huawei.com/net/dts/DTS/DTSAllList.aspx?CustomListId=20160202-1629-3470-9495-9697f8e993b3&&DTSBizList_AllExcelExport=1&DTSBizList_AllExportType=1&DTSBizList_AllExportField=0' |
| 52 | + jira_file = r'D:\\jira.xls' |
| 53 | + dts_file = r'D:\\dts.xls' |
| 54 | + cmd = "echo " + path_dir + "\JIRA_DTS_Handle.exe " + i_id + " " + i_pwd + r' "' + i_jira + r'" ' + r' "' + jira_file + r'" ' + r' "' + i_dts + r'" ' + r' "' + dts_file + r'" ' + " > run.bat" |
| 55 | + print(cmd) |
| 56 | + os.system(cmd) |
| 57 | + cmd=r'schtasks /create /tn "My App" /tr D:\work_python\work\run.bat /sc daily /st 07:00:00 /ed 2100/12/31' |
| 58 | + os.system(cmd) |
| 59 | + #tkinter.messagebox.showinfo("messagebox","Hello, %s" % i_id) |
| 60 | + |
| 61 | +class JIRAParser: |
| 62 | + """ This is a class to used to visit JIRA server and download the web data """ |
| 63 | + user = "" # your domian id |
| 64 | + password = "" # your domian password |
| 65 | + jira_login_url = "http://hisi-jira-pfm/rest/gadget/1.0/login" |
| 66 | + |
| 67 | + def __init__(self,user,pwd,jira_dl_url,jira_dl_File): |
| 68 | + """ initial, login """ |
| 69 | + self.user=user |
| 70 | + self.password=pwd |
| 71 | + """ create HTTP password manager """ |
| 72 | + """ save cookie, for ready to visit other page after login """ |
| 73 | + cookie = http.cookiejar.CookieJar() |
| 74 | + handeler = urllib.request.HTTPCookieProcessor(cookie) |
| 75 | + opener = urllib.request.build_opener(handeler) |
| 76 | + opener.addheaders = [('User-agent', 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6')] |
| 77 | + urllib.request.install_opener(opener) |
| 78 | + postdata = urllib.parse.urlencode({'os_username':self.user, 'os_password':self.password, 'os_cookie':'true'}) |
| 79 | + binary_data = postdata.encode('utf-8') |
| 80 | + |
| 81 | + res = urllib.request.urlopen(self.jira_login_url,binary_data) |
| 82 | + #print(res.status, res.reason) |
| 83 | + if( res.status == '200' ): |
| 84 | + exit() |
| 85 | + print (datetime.now(), "Login Successfully!") |
| 86 | + """ export JIRA issue to disk """ |
| 87 | + urllib.request.urlretrieve(jira_dl_url,jira_dl_File) |
| 88 | + print (datetime.now(), "Download Finished!") |
| 89 | + |
| 90 | +class DTSParser: |
| 91 | + """ This is a class to used to visit DTS server and download the web data """ |
| 92 | + user = "" # your domian id |
| 93 | + password = "" # your domian password |
| 94 | + dts_login_url = "http://dts.huawei.com" |
| 95 | + |
| 96 | + def __init__(self,user,pwd,dts_dl_url,dts_dl_File): |
| 97 | + """ login DTS.huawei.com with NTLM """ |
| 98 | + self.user=user |
| 99 | + self.password=pwd |
| 100 | + """ create HTTP password manager """ |
| 101 | + passwdMgr =urllib.request.HTTPPasswordMgrWithDefaultRealm() |
| 102 | + passwdMgr.add_password(None, self.dts_login_url, self.user, self.password) |
| 103 | + # create the NTLM authentication handler |
| 104 | + NTLM_handeler = HTTPNtlmAuthHandler.HTTPNtlmAuthHandler(passwdMgr) |
| 105 | + # create and install the opener |
| 106 | + opener = urllib.request.build_opener(NTLM_handeler) |
| 107 | + |
| 108 | + urllib.request.install_opener(opener) |
| 109 | + print (datetime.now(), "Login Successfully!") |
| 110 | + """ export DTS issue to disk """ |
| 111 | + urllib.request.urlretrieve(dts_dl_url,dts_dl_File) |
| 112 | + print (datetime.now(), "Download Finished!") |
| 113 | + |
| 114 | +def main(user,pwd,jira_dl_url,jira_dl_File,dts_dl_url,dts_dl_File): |
| 115 | + print (datetime.now(),"Main Begin") |
| 116 | + d1=datetime.now() |
| 117 | + |
| 118 | + print ("Handle JIRA...") |
| 119 | + parser = JIRAParser(user,pwd,jira_dl_url,jira_dl_File) |
| 120 | + d2=datetime.now() |
| 121 | + print ("JIRA Login and download cost:",d2-d1) |
| 122 | + |
| 123 | + print ("Handle DTS...") |
| 124 | + parser = DTSParser(user,pwd,dts_dl_url,dts_dl_File) |
| 125 | + d3=datetime.now() |
| 126 | + print("DTS Login and download cost:",d3-d2) |
| 127 | + |
| 128 | + GreeneTransCmd_jira =r'"C:\Program Files (x86)\GreeneTransClient\GreeneTransClientTool.exe" -r ' + jira_dl_File |
| 129 | + os.system(GreeneTransCmd_jira) |
| 130 | + GreeneTransCmd_dts =r'"C:\Program Files (x86)\GreeneTransClient\GreeneTransClientTool.exe" -r ' + dts_dl_File |
| 131 | + os.system(GreeneTransCmd_dts) |
| 132 | + |
| 133 | +if __name__ == '__main__': |
| 134 | + |
| 135 | + #print(len(sys.argv)) |
| 136 | + argv_len = len(sys.argv) |
| 137 | + |
| 138 | + if (argv_len == 7): |
| 139 | + user = sys.argv[1] |
| 140 | + pwd = sys.argv[2] |
| 141 | + jira_dl_url = sys.argv[3] |
| 142 | + jira_dl_File = sys.argv[4] |
| 143 | + dts_dl_url = sys.argv[5] |
| 144 | + dts_dl_File = sys.argv[6] |
| 145 | + main(user,pwd,jira_dl_url,jira_dl_File,dts_dl_url,dts_dl_File) |
| 146 | + else : |
| 147 | + frame = MainWindow() |
0 commit comments