我通过源代码编译安装了ProFTPD并且已经成功运行了,但我在想,不是单独执行所有步骤,而是可以使用bash脚本完成整个安装,但我对shell的了解较少脚本。请帮忙。 这些是我为构建和配置ProFTPD而执行的以下命令:
tar -xzf proftpd-1.3.3e.tar.gz
cd proftpd-1.3.3e
./configure –sysconfdir=/etc
make
make install
ln -s /usr/local/sbin/proftpd /usr/sbin/proftpd
groupadd ftpgroup
useradd -G ftpgroup onedomain -s /sbin/nologin -d /home/onedomain/public_html/
vim /etc/proftpd.conf
这里我给了用户名,组名,服务器名称
vim /etc/init.d/proftpd
#!/bin/sh
case $1 in
'start' )
/usr/local/sbin/proftpd
;;
'stop' )
kill `ps -ef | grep proftpd | grep -v grep | awk '{print $2}'` > /dev/null 2>&1
;;
*)
echo "usage: $0 {start|stop}"
esac
使用/etc/init.d/proftpd start
启动服务。
答案 0 :(得分:2)
您为编译代码键入了哪些命令?这些是shell脚本的第一个版本中需要的命令。
后续版本将允许您更改包含源的存档的名称(软件的新版本),以及提取源的目录(同上)和安装目录,等等。但第一步是将您输入的内容添加到shell脚本中。
我没有查看ProFTP配置文件的语法,因此您需要正确地重写该位。使用'here documents'创建配置和控制文件(记住以后在文件上正确设置权限)。
tar -xzf proftpd-1.3.3e.tar.gz || exit
cd proftpd-1.3.3e || exit
./configure –sysconfdir=/etc || exit
make || exit
make install || exit
rm -f /usr/sbin/proftpd
ln -s /usr/local/sbin/proftpd /usr/sbin/proftpd
# Check whether these exist before adding them?
groupadd ftpgroup
useradd -G ftpgroup onedomain -s /sbin/nologin -d /home/onedomain/public_html/
# Maybe save old version before overwriting with new?
cat >/etc/proftpd.conf <<'EOF'
username=onedomain
groupname=ftpgroup
servername=localserver
EOF
chmod 644 /etc/proftpd.conf
# Maybe save old version before overwriting with new?
# Maybe add 'restart' option to stop and start?
cat >/etc/init.d/proftpd <<'EOF'
#!/bin/sh
case $1 in
'start')
/usr/local/sbin/proftpd
;;
'stop')
kill $(ps -ef | grep proftpd | grep -v grep | awk '{print $2}') > /dev/null 2>&1
;;
*)
echo "usage: $0 {start|stop}" >&2
;;
esac
EOF
chmod 755 /etc/init.d/proftpd
/etc/init.d/proftpd start # restart
从这里开始,每次重复名称时,都应该将其变为变量,然后在脚本的其余部分中使用变量。
INIT_SCRIPT=/etc/init.d/proftpd
CONF_FILE=/etc/proftpd.conf
BASE_VERSION=proftpd-1.3.3e
tar -xf "${BASE_VERSION}.tar.gz" || exit
在变量名称周围使用双引号,这样即使文件路径名中也包含空格,也能正常工作。
请注意,最有可能失败的位 - 提取代码和构建软件的位 - 受|| exit
保护,因此如果出现问题,脚本将退出而不会损坏设置。
我倾向于将提取和构建阶段与安装和配置阶段分开,因此我可以像我一样运行第一部分,只运行安装和配置为root
。在我的书中以root
进行开发是危险的(或者,如果您愿意,我认为root
不应该运行编译器)。这是一种过度简化,但适度合理。你可以做root
的巨大伤害;尽量减少这样做的机会。构建可靠的第三方软件与开发root
不同,而且更加可疑。但是你应该尽可能少地使用root
(超级用户)权限。