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) |