本文提供了一種方法,該程式可實現抓取伺服器的記錄檔到本地,根據該程式可自行擴充對記錄檔的自動化分析。常用於資料採礦、生產維護等。
import osimport sysimport ftplibimport socket################################################################### sign in the ftp server and download the log file. # 登陸生產伺服器下載日誌#################################################################def getServerLog(dir,fileName,host,userName,password): if os.path.exists(fileName): print '****the file '+ fileName +' has already exist! The file will be over writed' #connect try: f=ftplib.FTP(host) except (socket.error,socket.gaierror),e: print '----ERROR:cannot reach '+host print e return False #login try: f.login(user=userName,passwd=password) except ftplib.error_perm ,e: print '----ERROR:cannot login to server '+host print e f.quit() return False print '****Logged in as ' + userName + ' to server ' +host #change folder try: f.cwd(dir) except ftplib.error_perm,e: print '----ERROR:cannot CD to %s on %s' % (dir,host) print e f.quit() return False print '**** changed to %s folder on %s' % (dir,host) #get file try: f.retrbinary('RETR %s' % fileName,open(fileName,'wb').write) except ftplib.error_perm,e: print '----ERROR:cannot read file %s on %s' % (fileName,host) print e os.unlink(fileName) return False else: print '****Downloaded '+ fileName +' from '+ host +' to '+os.getcwd() f.quit() return True if __name__ == "__main__": getServerLog("/userhome/root/other/temp","a.out","10.10.10.10","root","password") print '****done'
運行:python getServerLog.py