自动解压vsftpd上传的文件
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上传的文件的更多相关文章
- PHP自动解压上传的rar文件
PHP自动解压上传的rar文件 浏览:383 发布日期:2015/07/20 分类:功能实现 关键字: php函数 php扩展 大家都知道php有个zip类可直接操作zip压缩文件,可是用户有时候 ...
- php上传zip文件在线解压文件在指定目录下,CI框架版本
我从网上找的文件php在线解压zip压缩文件 文件为jy.php可以直接执行,但是怎样将其加到CI框架中呢?? jy.php文件 <?php header("content-Type: ...
- SpringMVC上传压缩文件,解压文件,并检测上传文件中是否有index.html
SpringMVC上传压缩文件,解压文件,并检测上传文件中是否有index.html 说明: 1.环境:SpringMVC+Spring+Tomcat7+JDK1.7 2.支持 zip和rar格式的压 ...
- Flask保存或解压上传的文件
import os import uuid import shutil import zipfile from flask import Flask, render_template, request ...
- JFinal中文件上传后会默认放置到WebContent的upload包下,但是tomcat会自动重启,当我们再次打开upload文件夹查看我们刚刚上传的文件时,发现上传的文件已经没有了。
JFinal中文件上传后会默认放置到WebContent的upload包下,但是tomcat会自动重启,当我们再次打开upload文件夹查看我们刚刚上传的文件时,发现上传的文件已经没有了.因为tomc ...
- autoIT 自动化上传/下载文件图文详解【python selenium】
情景: 在用selenium进行web页面自动化时,时不时会遇到上传附件的情况,常见的情况就是一个上传按钮,点击后弹出windows窗口,选择文件后上传,如下图1所示 图1 这种情况超出了seleni ...
- ASP.NET CORE Linux发布工具(文件对比 只上传差异文件;自动启停WebServer命令;上传完成自动预热WebServer)
最近这几日在搞一个小网站:教你啊 :(感兴趣的朋友可以来捧场,在这个网站上有任何消费我都可以退还) 由于更新频繁,手动更新特别麻烦,于是开发了这个小工具 用了一段时间,还是挺顺手的,同时.NET Co ...
- 向linux服务器上传下载文件方式收集
向linux服务器上传下载文件方式收集 1. scp [优点]简单方便,安全可靠:支持限速参数[缺点]不支持排除目录[用法] scp就是secure copy,是用来进行远程文件拷贝的.数据传输使用 ...
- edtftpj让Java上传FTP文件支持断点续传
在用Java实现FTP上传文件功能时,特别是上传大文件的时候,可以需要这样的功能:程序在上传的过程中意外终止了,文件传了一大半,想从断掉了地方继续传:或者想做类似迅雷下载类似的功能,文件太大,今天传一 ...
随机推荐
- 诡异的DataTime.Now.ToString()
昨天晚上调程序的时候在服务器上出现这种问题 DataTime.Now.ToString("yyyy-MM-dd HH:mm:ss") 居然出现了2014-8-14 8:nn:14: ...
- postgresql 指令
(1)用户实用程序: createdb 创建一个新的PostgreSQL的数据库(和SQL语句:CREATE DATABASE 相同) createuser 创建一个新的PostgreSQL的用户(和 ...
- 浅谈千万级PV/IP规模高性能高并发网站架构(转自老男孩)
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://oldboy.blog.51cto.com/2561410/736710 如果把来 ...
- nginx优化 实现10万并发访问量
一般来说nginx配置文件中对优化比较有作用的为以下几项:worker_processes 8;1 nginx进程数,建议按照cpu数目来指定,一般为它的倍数.worker_cpu_affinity ...
- mysql check约束无效
转自http://blog.csdn.net/maxint64/article/details/8643288 今天在mysql中尝试使用check约束时,才知道在MySQL中CHECK约束是无效的, ...
- angular-file-upload+struts的使用
参考帖子 http://www.cnblogs.com/wangzun/p/6099884.html http://www.cnblogs.com/highriver/archive/2011/06/ ...
- MySQL使用查询结果生成临时表
MySQL中不支持对同一个表使用其查询结果更新or删除本表内数据(也就是update或delete后的where条件为针对相同表的select),解决方案是创建临时表做过度保存中间数据: 可以直接使用 ...
- create-react-app中img图片不现实
场景:正常的情况下是这么引用图片,我的图片路径是 src/images/login-from-icon1.png <img src="../images/login-from-icon ...
- SQLite 3的中文读写
调用sqlite3_open函数默认创建的数据库encoding=UTF-8,执行sqlite3_exec时需要将对应的字符串转换为UTF-8格式多字节字符串.比如: sqlite3* db; aut ...
- 为Gem 添加环境设定
如果在测试环境中 gem "rspec", :group => :test 当多个gem的时候 group :test do gem "webrat" g ...