自动解压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上传文件功能时,特别是上传大文件的时候,可以需要这样的功能:程序在上传的过程中意外终止了,文件传了一大半,想从断掉了地方继续传:或者想做类似迅雷下载类似的功能,文件太大,今天传一 ...
随机推荐
- CentOS-6.4 安装 Memcached
1.准备文件 cd /usr/src 最新版下载地址 :http://code.google.com/p/memcached/downloads/list wget http://memcached. ...
- ios开发之--UIButton中imageView和titleLabel的位置调整
在使用UIButton时,有时候需要调整按钮内部的imageView和titleLabel的位置和尺寸.在默认情况下,按钮内部的imageView和titleLabel的显示效果是图片在左文字在右,然 ...
- NFS 常见报错
问题:客户端挂载共享目录后,不管是root用户还是普通用户,创建新文件时属主属组都为nobody解决方法:这种情况会出现在 centos6 或 NFS 4版本中,只要在挂载的时候加上 -o nfsve ...
- Ansible 管理任务计划
ansible 使用 cron 模块来管理任务计划: [root@localhost ~]$ ansible 192.168.119.134 -m cron -a "name='test c ...
- Python中字符串的intern机制
intern机制: 字符串类型作为Python中最常用的数据类型之一,Python解释器为了提高字符串使用的效率和使用性能,做了很多优化,例如:Python解释器中使用了 intern(字符串驻留)的 ...
- 使用IDEA实现tomcat的热加载
1.打开tomcat的edit configuration,一定要选择war exploded 2.选择update classes and resources 3.配置基本就是这样,后面选择de ...
- 《Lua程序设计》第5章 函数 学习笔记
Lua为面向对象式的调用也提供了一种特殊的语法——冒号操作符.表达式o.foo(o, x)的另一种写法是o:foo(x),冒号操作符是调用o.foo时将o隐含地作为函数的第一个参数.Lua可以调用C语 ...
- 类型化dataset分页
SELECT TOP (@每页行数) 所选列FROM 表名WHERE (主键 NOT IN( SELECT TOP ((@页数-1)*@每页行数) 主键FROM 表名where ( 条件)))AND ...
- 【技术分享会】 @第三期 CSS框架 PRUE 实现自适应和响应式
Pure网址:https://purecss.cn/ 什么是响应式和自适应? .响应式:样式会随着屏幕大小改变,同一页面设备不同样式不同 .自适应:不管屏幕大小,页面的样式比例不变 响应式和自适应怎么 ...
- WebApp与Native App有何区别
转:http://blog.sina.com.cn/s/blog_5f2df1e401018hjj.html 今天看的一篇关于html5的Web App与Native App的技术分析,真的很棒分享一 ...