使用shell脚本快速部署NFS服务
脚本采用模块化设计,使代码更加简洁,更加直观
代码块
#!/bin/bash
#services函数判断rpcbind远程调用服务是否是开启状态
services(){
rpc=`netstat -nutlp|grep -i rpcbind |sed -n '1p' |awk -F "/" '{print $NF}'`
if [ $rpc == rpcbind ];then
echo rpcbind.service running
else
systemctl start rpcbind
if [ $? -eq 0 ];then
echo rpcbind is running
else
echo rpcbind is norunning
fi
fi
}
#nfssetup简化了写入exports文件方式,关键的一步,使我们部署NFS变得简单
nfssetup(){
cat <<EOF
顺序为目录,IP范围defautl is 0.0.0.0/0.0.0.0、权限,权限0为默认权限secure较为危险,不建议!
EOF
read -p "catalog /data: " catalog
[ ! $catalog ] && mkdir /data && catalog=/data
read -p "IP/0-32: " IP
[ ! $IP ] && IP=0.0.0.0/0.0.0.0
read -p "ro/rw/: " RWX
[ ! $RWX ] &&RWX=rw,sync
echo -e $catalog $IP \($RWX\) >> /etc/exports
systemctl restart nfs
if [ $? -eq 0 ];then
echo "NFS部署完成"
else
echo "NFS服务启动失败,请手动重启"
exit 1
fi
}
#这里采用的是yum本地的安装方式,下面的aptinstall同理,这样的好处是,
#在没有网络的情况下,只要将安装包放到同级目录下,即可完成部署,不分架构
yuminstall(){
if [ `rpm -qa nfs-utils |wc -l` != 1 ];then
yum localinstall nfs-utils* >> /dev/null
echo "NFS安在完成"
else
echo "NFS已经安装"
fi
}
#放行防火墙或者添加防火墙规则
firewallserver(){
cat <<EOF
firewall:add nfs、mountd、rpm-bind
EOF
firewall-cmd --permanent --add-service=nfs >> /dev/null
firewall-cmd --permanent --add-service=mountd >> /dev/null
firewall-cmd --permanent --add-service=rpc-bind >> /dev/null
}
#判断是要关闭还是添加规则
firewallstatus(){
read -p "firewalld stop/add 0/1:" firewall
if [ $firewall == 0 ];then
systemctl stop firewalld.service
else
firewallserver
fi
}
#往上翻
aptinstall(){
if [ `dpkg -qa nfs-utils |wc -l` != 1 ];then
dpkg -i nfs-kernel-server* >> /dev/null
#个人真的不是很喜欢Ubuntu,只是因为源混乱的管理
if [ `dpkg -qa nfs-utils |wc -l` != 1 ];then
echo "安装包有误"
else
echo "NFS安装完成"
fi
else
echo "NFS已经安装"
fi
}
#判断是哪种安装方式
systema(){
read -p "install? yes/no" install
if [ $install = yes ];then
read -p "rpm/deb" packages
if [ $packages == 'rpm' ];then
yuminstall
else
aptinstall
fi
fi
}
systema
services
nfssetup
firewallstatus
还有非常多可以改进的地方,但我希望能得到更多有意义的建议,或者错误的指出