Chinaunix首页 | 论坛 | 博客
  • 博客访问: 677922
  • 博文数量: 467
  • 博客积分: 8050
  • 博客等级: 中将
  • 技术积分: 14825
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-18 11:00
文章分类

全部博文(467)

文章存档

2009年(8)

2008年(459)

分类:

2008-04-19 21:19:02

1、查找pure-ftpd的官方资料(通过代理上去的,好难),得到了一份说明文档(附件中就是我得到的文档),发现有一个uploadscript功能,就是等文件被上传后,会触发一个自定义的脚本。

2、实验该功能能够触发脚本的配置,发现配置下(freebsd 4.10 用ports安装),就支持这个功能,只要在pure-ftpd.conf 中设置CallUploadScript yes 就可以了。然后在运行
/usr/local/sbin/pure-uploadscript -B -r /usr/local/etc/pure-uploadscript.sh。就可以了,其中/usr/local/etc/pure-uploadscript.sh是我自己写的脚本。pure-uploadscript参考如下:
-B --daemonize
-g --gid
-h --help
-r --run
-u --uid
你还需要建立一个这样的文件:touch /var/run/pure-ftpd.upload.pipe。

3、需要注意的是,当起用了CallUploadScript yes 后,ftp就不能自动运行了,当运行了pure-uploadscript后,ftp才开始运行。文档上的描述是:
YOU MUST START PURE-FTPD _FIRST_ and _THEN_ START PURE-UPLOADSCRIPT.
THE REVERSE ORDER WON'T WORK.
4、可以自动运行脚本后,我花了几个小时突击学习了SHELL编程,并写下了以下脚本:

#!/bin/sh
#######################################################
#This script is a uploadscript of pure-ftpd.
#When a file is upload,this script will be run by ftp system.
#It will test the type of file,if the file is any executable file,the
#script will delete it;If the file is the zip format,the script will unzip it.
#This script is written by boboder.
#Date 2004-12-11
#######################################################

#Begin:
Exfname=`echo "$1" | sed 's/^.*\.//'` #获得文件的扩展名
case "$Exfname" in #如果是任何可执行的文件,立即删除
exe) rm "$1" ;;
vbs) rm "$1" ;;
js) rm "$1" ;;
pif) rm "$1" ;;
scr) rm "$1" ;;
bat) rm "$1" ;;
chm) rm "$1" ;;
cmd) rm "$1" ;;
com) rm "$1" ;;
hta) rm "$1" ;;
lnk) rm "$1" ;;
msc) rm "$1" ;;
msi) rm "$1" ;;
msp) rm "$1" ;;
ocx) rm "$1" ;;
reg) rm "$1" ;;
shs) rm "$1" ;;
vb) rm "$1" ;;
wsc) rm "$1" ;;
url) rm "$1" ;;

zip) #如果是zip文件,就自动解压缩
echo "This is a zip file" > /usr/local/etc/fn
filename=`echo "$1" | sed 's/\.zip//'` && mkdir $filename
unzip -x -d $filename $1
#unzip -x -P 22222222 -d $filename $1 #预先配置的zip文件密码
#unzip -x -P 33333333 -d $filename $1
#unzip -x -P 555 -d $filename $1
chown -R ftp $filename;; #改变权限,可以让FTP用户操作这个目录
esac
5、这个脚本的不足:由于是初涉SHELL编程,书写风格、编程习惯都很生。没有实现文件路径中有空格的处理;没有实现对大小写的不敏感;没有实现对解压缩后的文件的校验;
阅读(1547) | 评论(0) | 转发(0) |
0

上一篇:Centos linux 5内核编译

下一篇:usb上的Linux

给主人留下些什么吧!~~