在Ubuntu上自定义FTP Server(以vsftpd为例)脚本,可通过以下方式实现:
安装vsftpd
sudo apt update && sudo apt install vsftpd
启用自定义命令功能
编辑配置文件 /etc/vsftpd.conf,添加:
local_enable=YES
write_enable=YES
custom_commands_enable=YES
custom_commands_script=/etc/vsftpd/custom_commands.sh # 指定自定义命令脚本路径
创建自定义命令脚本
sudo nano /etc/vsftpd/custom_commands.sh
示例内容(如执行mycommand时输出信息):
#!/bin/bash
case "$1" in
mycommand)
echo "Custom command executed by $USER at $(date)" >> /var/log/vsftpd_custom.log
;;
*)
echo "Unknown command"
;;
esac
赋予执行权限:
sudo chmod +x /etc/vsftpd/custom_commands.sh
重启服务生效
sudo systemctl restart vsftpd
客户端连接后输入mycommand即可触发脚本。
文件上传后执行脚本
在/etc/vsftpd.conf中添加:
post_upload_script=/path/to/upload_script.sh
脚本示例(移动上传文件并记录日志):
#!/bin/bash
mv "$1" "/path/to/processed/$1"
echo "File $1 uploaded and processed at $(date)" >> /var/log/vsftpd_upload.log
用户登录时执行脚本
在/etc/vsftpd.conf中添加:
login_script=/path/to/login_script.sh
脚本示例(记录登录时间):
#!/bin/bash
echo "User $USER logged in at $(date)" >> /var/log/vsftpd_login.log
参考来源: