Python 官方文档:入门教程 => 点击学习
本文源码转至:https://GitHub.com/kasun/python-tail 感谢作者, 稍加修改,实现了文件动态上传的功能一: 主体执行部分 [root@linux219 base]# cat vsftp.py #!/usr/b
本文源码转至: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('')
--结束END--
本文标题: Python tail 实现S3 动态上
本文链接: https://www.lsjlt.com/news/191198.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0