因为需要用到ftp服务,顺便练习下shell的使用,写了个自动安装脚本,现在共享出来,方便大家
#!/bin/sh
wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.5rc3.tar.gz
tar zxvf proftpd-1.3.5rc3.tar.gz
cd proftpd-1.3.5rc3
./configure --prefix=/usr/local/proftpd --sysconfdir=/etc
make
make install
#配置/etc/init.d/proftpd服务,从而可以正常启动
content='#!/bin/sh
#chkconfig: 345 85 15
# ProFTPD 的启动脚本
# Author: GP
# Email: vsgeping@gmail.com
# website: http://www.gplinux.com
# 设置变量
FTP_BIN=/usr/local/proftpd/sbin/proftpd
FTP_CONF=/etc/proftpd.conf
FTP_PID=/usr/local/proftpd/var/proftpd.pid
if [ -f $FTP_PID ]; then # 判断proftpd.pid文件是否存在
pid=`cat $FTP_PID` #如果存在,即执行命令并把结果存入变量pid
fi
if [ ! -x $FTP_BIN ]; then
echo "$0: $FTP_BIN: 不可执行"
exit 1
fi
# 获取参数并判断
case "$1" in
start)
if [ -n "$pid" ]; then #如果pid变量的长度非零则为真
echo "$0: proFTPD [PID $pid] 已经在运行,请勿重复启动"
exit
fi
if [ -r "$FTP_CONF" ]; then #检查配置文件是否存在并且有读权限
echo "正在启动proFTPD服务..."
$FTP_BIN -c $FTP_CONF #加上c参数,指定配置文件
else
echo "$0: 不能启动proFTPD服务,原因:proFTPD的配置文件$FTP_CONF有错"
fi
;;
stop)
if [ -n "$pid" ]; then #如果pid变量的长度非零则为真
echo "正在关闭proFTPD服务..."
kill -TERM $pid #给父进程发送一个TERM信号,试图杀死它和它的子进程。
else
echo "$0: proFTPD没有运行,无法关闭"
exit 1
fi
;;
restart)
if [ -n "$pid" ]; then #如果pid变量的长度非零则为真
echo "正在重启proFTPD服务..."
kill -HUP $pid #重启该进程
else
echo "$0: proFPTD没有运行,无法重启"
exit 1
fi
;;
*)
echo "命令用法: $0 {start|stop|restart}"
exit 1
esac
exit 0
EOF
'
echo "$content" > /etc/init.d/proftpd
sed -i '/^Group.*nogroup$/s/nogroup/nobody/' /etc/proftpd.conf
echo "Systemlog /var/log/proftpd/proftp.log" >> /etc/proftpd.conf
mkdir -p /var/log/proftpd