rsyslog.conf配置自定义模板

$template ssolog,"%msg%\n"
if $programname == 'vsftpd' then ^/bin/auto_unzip.py;ssolog
#$ModLoad omprog
#$ActionOMProgBinary /etc/auto_unzip.py
#if $programname == 'vsftpd' then :omprog:;ssolog *.* /var/log/mvsftpd.log;ssolog

编写脚本

vim /bin/auto_unzip.py

#!/usr/bin/python

import sys
import os

BASE_DIR = '/home/wwwroot/default/client/'

def extract_zip(ftp_user, file_path):
abs_file_path = os.path.join(BASE_DIR, file_path[1:])
if ftp_user != '':
os.system('sudo unzip %s -d %s' % (abs_file_path, os.path.dirname(abs_file_path)))
os.system('sudo chown %s.%s -R %s' % (ftp_user, ftp_user, os.path.dirname(abs_file_path)))
os.system('sudo rm -f %s' % abs_file_path)
else:
return

def extract_targz(ftp_user, file_path):
abs_file_path = os.path.join(BASE_DIR, file_path[1:])
if ftp_user != '':
os.system('sudo tar zxf %s -C %s' % (abs_file_path, os.path.dirname(abs_file_path)))
os.system('sudo chown %s.%s -R %s' % (ftp_user, ftp_user, os.path.dirname(abs_file_path)))
os.system('sudo rm -f %s' % abs_file_path)
else:
return

def extract_tgz(ftp_user, file_path):
abs_file_path = os.path.join(BASE_DIR, file_path[1:])
if ftp_user != '':
os.system('sudo tar xf %s -C %s' % (abs_file_path, os.path.dirname(abs_file_path)))
os.system('sudo chown %s.%s -R %s' % (ftp_user, ftp_user, os.path.dirname(abs_file_path)))
os.system('sudo rm -f %s' % abs_file_path)
else:
return

fh = open('/tmp/auto_unzip.log', 'a+')

log = sys.argv[1]
log_arr = log.split(',')
if len(log_arr) > 2:
ftp_user = ''
ftp_user_arr = log_arr[0].split(' ')
if len(ftp_user_arr) > 1:
ftp_user = ftp_user_arr[1].strip('[] ')
file_path = log_arr[1].strip('" ')
#fh.write(file_path + '\n')
if file_path.endswith('.zip'):
extract_zip(ftp_user, file_path)
fh.write('%s extract ok.\n' % file_path)
elif file_path.endswith('tar.gz'):
extract_targz(ftp_user, file_path)
fh.write('%s extract ok.\n' % file_path)
elif file_path.endswith('.tgz'):
extract_tgz(ftp_user, file_path)
fh.write('%s extract ok.\n' % file_path)
else:
pass
fh.close()

rsyslog变量:http://www.rsyslog.com/doc/v8-stable/configuration/properties.html

模板:http://www.rsyslog.com/doc/v8-stable/configuration/templates.html

自动解压vsftpd上传的文件的更多相关文章

  1. PHP自动解压上传的rar文件

    PHP自动解压上传的rar文件   浏览:383 发布日期:2015/07/20 分类:功能实现 关键字: php函数 php扩展 大家都知道php有个zip类可直接操作zip压缩文件,可是用户有时候 ...

  2. php上传zip文件在线解压文件在指定目录下,CI框架版本

    我从网上找的文件php在线解压zip压缩文件 文件为jy.php可以直接执行,但是怎样将其加到CI框架中呢?? jy.php文件 <?php header("content-Type: ...

  3. SpringMVC上传压缩文件,解压文件,并检测上传文件中是否有index.html

    SpringMVC上传压缩文件,解压文件,并检测上传文件中是否有index.html 说明: 1.环境:SpringMVC+Spring+Tomcat7+JDK1.7 2.支持 zip和rar格式的压 ...

  4. Flask保存或解压上传的文件

    import os import uuid import shutil import zipfile from flask import Flask, render_template, request ...

  5. JFinal中文件上传后会默认放置到WebContent的upload包下,但是tomcat会自动重启,当我们再次打开upload文件夹查看我们刚刚上传的文件时,发现上传的文件已经没有了。

    JFinal中文件上传后会默认放置到WebContent的upload包下,但是tomcat会自动重启,当我们再次打开upload文件夹查看我们刚刚上传的文件时,发现上传的文件已经没有了.因为tomc ...

  6. autoIT 自动化上传/下载文件图文详解【python selenium】

    情景: 在用selenium进行web页面自动化时,时不时会遇到上传附件的情况,常见的情况就是一个上传按钮,点击后弹出windows窗口,选择文件后上传,如下图1所示 图1 这种情况超出了seleni ...

  7. ASP.NET CORE Linux发布工具(文件对比 只上传差异文件;自动启停WebServer命令;上传完成自动预热WebServer)

    最近这几日在搞一个小网站:教你啊 :(感兴趣的朋友可以来捧场,在这个网站上有任何消费我都可以退还) 由于更新频繁,手动更新特别麻烦,于是开发了这个小工具 用了一段时间,还是挺顺手的,同时.NET Co ...

  8. 向linux服务器上传下载文件方式收集

    向linux服务器上传下载文件方式收集 1. scp [优点]简单方便,安全可靠:支持限速参数[缺点]不支持排除目录[用法] scp就是secure copy,是用来进行远程文件拷贝的.数据传输使用 ...

  9. edtftpj让Java上传FTP文件支持断点续传

    在用Java实现FTP上传文件功能时,特别是上传大文件的时候,可以需要这样的功能:程序在上传的过程中意外终止了,文件传了一大半,想从断掉了地方继续传:或者想做类似迅雷下载类似的功能,文件太大,今天传一 ...

随机推荐

  1. 8 -- 深入使用Spring -- 2...1 搜索Bean类

    8.2.1 搜索Bean类 既然不再使用Spring配置文件来配置任何Bean实例,那么只能希望Spring会自动搜索某些路径下的Java类,并将这些Java类注册成Bean实例. tips:Rail ...

  2. Netty权威指南之NIO通信模型

    NIO简介:与Socket和ServerSocket类相对应,NIO提供了SocketChannel和ServerSocketChannel两种不同的套接字通道实现,这两种新通道都支持阻塞和非阻塞两种 ...

  3. SpringBoot(八)-- 日志

    一.介绍 SpringBoot内部使用Commons Logging来记录日志,但也保留外部接口可以让一些日志框架来进行实现,例如Java Util Logging,Log4J2还有Logback.如 ...

  4. Django SimpleCMDB 使用序列化

    如下,前面我们是使用 urllib 方法来转换并传递数据的: [root@localhost ~]$ tail /data/script/getHostInfo.py if __name__ == ' ...

  5. socket 中文man页面函数

    Linux 套接字的用户接口. 这个 BSD 兼容套接字是介于用户进程与内核网络协议栈之间的统一接口, 各协议模块属于不同的 协议族 ,如 PF_INET, PF_IPX, PF_PACKET 和 套 ...

  6. Python进阶 学习笔记(二)

    (涉及内容:面向对象,类的继承) 定义类并创建实例 在Python中,类通过 class 关键字定义.以 Person 为例,定义一个Person类如下: class Person(object): ...

  7. windos或linux中 which命令 查看当前要执行的命令所在的路径

    whereis 用来查看一个命令或者文件所在的绝对路径,而 which 用来查看当前要执行的命令所在的路径. 下面举个例子来说明.加入你的linux系统上装了多个版本的java.如果你直接在命令行敲命 ...

  8. 《征服C指针》读书笔记

    本文同时发布在我的个人博客上,欢迎访问~ www.seekingdream.cn 在读完K&R之后,对C的认识就是指针.数组.网上的人们对指针也有些“敬而远之”的感觉.最近从同学处淘得< ...

  9. css笔记 - 张鑫旭css课程笔记之 margin 篇

    margin - 人若犯我,我必犯人! [margin地址](https://www.imooc.com/learn/680) 一.margin与容器尺寸的关系 relative可定位,但是不改变容器 ...

  10. Linux(Ubuntu)下如何解压 .zip 文件

    安装解压缩软件 使用如下命令安装: sudo apt-get install p7zip-full 7zip,估计会比较熟悉. p7zip,是什么? 听说是 7zip 的 shell 封装. 解压 使 ...