proftpd看似很简单、很强的ftp服务器,但是想快速配置、运行起来,却不太直观。
我的两个使用场景:
1.Mac开发 FTP代码同步到Linux开发机,在服务器中运行程序
2.给其他人共享一些文件
./configure
make
make install
三步骤完成后,怎么配置,才能正常跑起来?
这里分享一个同事写的shell脚本,命名为init.sh
#!/bin/sh
CURPATH=`cd $(dirname $0);pwd`
authmsg=$(id)
#uid=506(quanjing)
suid=$(echo $authmsg|awk -F' ' '{print $1}')
#gid=505(map)
sgid=$(echo $authmsg|awk -F' ' '{print $2}')
uid=$(echo $suid | awk -F'=' '{print $2}' | awk -F'(' '{print $1}')
gid=$(echo $sgid | awk -F'=' '{print $2}' | awk -F'(' '{print $1}')
uname=$(echo $suid | awk -F'(' '{print $2}' | awk -F')' '{print $1}')
gname=$(echo $sgid | awk -F'(' '{print $2}' | awk -F')' '{print $1}')
echo "uid $uid uname $uname gid $gid gname $gname";
proconf="$CURPATH/etc/proftpd.conf"
## 替换配置文件
function editconf()
{
opt="$1"
#sed -i "s/^.$opt[[:space:]]*.*/$opt $2/" $proconf
sed -i "s#^\s*[#]*\s*$opt\s.*#$opt $2#" $proconf
#echo "sed -i \"s/^\s*[#]*\s*$opt\s*.*/$opt $2/\" $proconf"
}
editconf "User" "$uname"
editconf "Group" "$gname"
editconf "DefaultRoot" "$HOME"
editconf "AuthUserFile" "$CURPATH/var/ftpd.passwd"
editconf "AuthGroupFile" "$CURPATH/var/ftpd.group"
editconf "UserAlias" "anonymous ftp $uname"
# 处理UID
bin/ftpasswd --home $HOME --name $uname --group $gname --shell /bin/bash --file $CURPATH/var/ftpd.group --uid $uid --gid $gid
bin/ftpasswd --home $HOME --name $uname --passwd $uname --shell /bin/bash --file $CURPATH/var/ftpd.passwd --uid $uid --gid $gid
我们执行 sh init.sh 它做的事儿是:
通过调用ftpasswd命令、替换默认配置文件,以当前用户作为ftp的用户
最后 sh start.sh启动服务
#!/bin/sh
CURDIR=`cd $(dirname $0);pwd`
export LD_LIBRARY_PATH=$CURDIR/lib:$LD_LIBRARY_PATH
nohup sbin/proftpd -c $CURDIR/etc/proftpd.conf -n &
附件 proftpd.tar.gz.zip 是已编译好的proftpd,先后执行init.sh start.sh 可快速运行起来。
参考 http://ftp.proftpd.org/docs/