温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python tail 实现S3 动态上传

发布时间:2020-07-08 21:01:18 来源:网络 阅读:517 作者:swq499809608 栏目:云计算

本文源码转至:https://github.com/kasun/python-tail 感谢作者, 稍加修改,实现了文件动态上传的功能

一: 主体执行部分 [root@linux219 base]# cat vsftp.py #!/usr/bin/env python #-*-coding:UTF-8-*- """ @Item   :  cheetah v1.0 @Author :  william @Group  :  System YunWei @Date   :  2015-01-28 @E-mail :  swq.499809608@163.com @Funtion:      """ import json,sys,time,os import time import hmac import hashlib import requests import re import tail Dfile = "/data/base/vsftp" Vfile = "/var/log/vsftpd.log" Nfile = "/data/base/vsftp/n.log" def s3Vsftp():     os.system("cp -fr %s %s "%(Vfile,Nfile))     os.system("echo ''>%s "%Vfile)     fp = open(Nfile,'r').readlines()     for x in fp:         if  re.search("CHMOD",x) or re.search("UPLOAD",x):             x =  x.strip()             x =  x.split('"')[3]             nx = x.split()[0]                          if os.path.isfile("/data/cifs"+nx):                 os.system("s3cmd --acl-public put /data/cifs%s s3://swq499809608.aws.com%s" %(nx,nx))             elif re.search('zip',nx):                 try:                     os.system("s3cmd --acl-public put %s s3://swq499809608.aws.com%s" %(nx,nx.split('imguser')[1]))                 except:                     pass     os.system("mv  %s %s/%s.file"%(Nfile,Dfile,time.strftime("%F-%H-%M"))) def  work():     while True:         t = tail.Tail(Vfile)         print t.follow() if __name__ == "__main__":     sc = work()           二: tail. 实现部分 源码转至: https://github.com/kasun/python-tail [root@linux219 base]# cat tail.py #!/usr/bin/env python ''' Python-Tail - Unix tail follow implementation in Python. python-tail can be used to monitor changes to a file. Example:     import tail     # Create a tail instance     t = tail.Tail('file-to-be-followed')     # Register a callback function to be called when a new line is found in the followed file.     # If no callback function is registerd, new lines would be printed to standard out.     t.register_callback(callback_function)     # Follow the file with 5 seconds as sleep time between iterations.     # If sleep time is not provided 1 second is used as the default time.     t.follow(s=5) ''' # Author - Kasun Herath <kasunh01 at gmail.com> # Source - https://github.com/kasun/python-tail import os import sys import time import re class Tail(object):     ''' Represents a tail command. '''     def __init__(self, tailed_file):         ''' Initiate a Tail instance.             Check for file validity, assigns callback function to standard out.                          Arguments:                 tailed_file - File to be followed. '''         self.check_file_validity(tailed_file)         self.tailed_file = tailed_file         self.callback = sys.stdout.write     def follow(self, s=1):         ''' Do a tail follow. If a callback function is registered it is called with every new line.         Else printed to standard out.              Arguments:             s - Number of seconds to wait between each iteration; Defaults to 1. '''         with open(self.tailed_file) as file_:             # Go to the end of file             file_.seek(0,2)             while True:                 curr_position = file_.tell()                 line = file_.readline()                 if not line:                     file_.seek(curr_position)                     time.sleep(s)                 else:                     #self.callback(line)                     if  re.search("CHMOD",line) or re.search("UPLOAD",line):                         #修改主体部分                         x =  line.strip()                         x =  x.split('"')[3]                         nx = x.split()[0]                         # commad s3cmd put file                                        if os.path.isfile("/data/cifs"+nx):                             print "/data/cifs"+nx                             os.system("s3cmd --acl-public put /data/cifs%s s3://swq499809608.aws.com%s" %(nx,nx))                             print ("s3cmd --acl-public put /data/cifs%s s3://swq499809608.aws.com%s" %(nx,nx))                         elif re.search('zip',nx):                             try:                                 os.system("s3cmd --acl-public put %s s3://swq499809608.aws.com%s" %(nx,nx.split('imguser')[1]))                             except:                                 pass                         else:                             print 'no'                         #主体结束部分     def register_callback(self, func):         ''' Overrides default callback function to provided function. '''         self.callback = func     def check_file_validity(self, file_):         ''' Check whether the a given file exists, readable and is a file '''         if not os.access(file_, os.F_OK):             raise TailError("File '%s' does not exist" % (file_))         if not os.access(file_, os.R_OK):             raise TailError("File '%s' not readable" % (file_))         if os.path.isdir(file_):             raise TailError("File '%s' is a directory" % (file_)) class TailError(Exception):     def __init__(self, msg):         self.message = msg     def __str__(self):         return 'yes',self.message.split('')
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI