텍스트 큐브 데이터 자동 백업
프로그래밍 :
2008/12/11 19:09
| 역시나 이번에도 귀차니즘의 발동으로 웹으로 클릭질 하면서 백업하기 귀찮아서 자동백업에 사용할 수 있도록 스크립트를 만들어봤습니다. 텍스트큐브 데이터를 백업하기 위해서는 웹으로 로그인이 필요하므로 쉘스크립트는 무리라서 파이썬으로 작성을 했습니다. 따로 설명은 안하겠습니다. 함수의 인자를 보시면 무엇을 넣어야하는지 아실겁니다. 대략적인 작동 방식은 텍스트큐브에 로그인 한 다음 관리자툴의 백업 url을 get으로 요청하여 xml로 된 데이터를 받아서 로컬에 저장해 줍니다. 이 스크립트를 이용하여 예전에 만들었던 trac 백업하기를 응용하면 백업후 자동으로 메일 발송이 가능합니다. :) 아.. 웹서버가 불안정 했는데 데이터 날아갈 걱정이 줄었네요.. #!/usr/bin/python import httplib, urllib, os, sys def backupTextCube(host, id, password, blogroot, toSavePath, filename, incAttachment) : params = urllib.urlencode({"loginid": id, "password": password}) headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/html"} conn = httplib.HTTPConnection(host) conn.request("POST", blogroot + "/login", params, headers) response = conn.getresponse() response.read() cookies = [] start = 0 end = 0 items = response.getheader("set-cookie") while True : start = items.find("TSSESSION", start) end = items.find(";", start) if start == -1 : break extracted = items[start:end] if "LOGINID" not in extracted : cookies.append(extracted) start = end params = urllib.urlencode({}) headers = {"Cookie": ";".join(cookies[1:])} conn.request("GET", blogroot + "/owner/data/export?includeFileContents=" + str(incAttachment).lower(), params, headers) response = conn.getresponse() result = False if response.status == 200 : if not os.path.exists(toSavePath) and toSavePath != "." : os.mkdir(toSavePath) file = open(toSavePath + "/" + filename, "wb+") while True : readed = response.read(4098) if readed == "" : break file.write(readed) file.close() result = True else : result = False conn.close() return result if __name__ == "__main__" : backupTextCube("www.dcple.com", "a@a.com", "1234", "/blog", ".", "blogbackup.xml", True) |





댓글을 달아 주세요
ㅋ 대단한데 이틀만에 파이썬 배우면서 만들다니~