Shell编程 Case 和 函数的小练习

#!/bin/bash
shname=`basename $0`

free () {
/usr/bin/free -h | awk 'NR==2{print $7}' 
}

disk () {
/usr/bin/df -h | awk '/sd/{print $1"\t"$5}'
}

ipaddr () {
ifconfig ens32 | awk 'NR==2{print $2}'
}


select i in "内存" "磁盘信息" "IP地址" "退出" 
do
	case $i in 
		内存 )
		free
		;;
		磁盘信息 )
		disk
		;;
		IP地址 )
		ipaddr
		;;
		退出 )
		exit
		;;
		* )
		echo "use $shname {1|2|3|4}"
		;;
	esac
done
#!/bin/bash
installnginx (){

#设置安装nginx的版本(可以自定义)
nginxlevel=nginx-1.20.1
 
#判断是否以root用户执行此脚本
if [ $UID -ne 0 ]; 
then
	echo "请使用Root用户执行$0"
	exit
fi
 
#判断是否接入网络
ping baidu.com -c4 >/dev/null
 
if [ $? -ne 0 ];
then
	echo "执行$0需要访问到互联网..."
	echo "请检查与互联网的连接后再试..."
	exit	
fi
 
#判断系统是否安装过nginx
exist=$(whereis nginx | awk '{print $2}')
 
if [ ! -z "${exist}" ];
then
	echo "您的系统已经部署过nginx了..."
	echo "或您的系统还有nginx残留文件..."
	echo "可以使用 "whereis nginx" 和 "find / -name nginx" 查找清空掉残留文件..."
	exit
fi
 
#安装依赖环境
yum install -y gcc openssl-devel pcre-devel zlib-devel lsof wget
 
groupadd -r nginx
useradd -r -g nginx -s /sbin/nologin -M nginx
mkdir -pv /var/tmp/nginx
wget -P /root http://nginx.org/download/"$nginxlevel".tar.gz
tar -zxvf /root/"$nginxlevel".tar.gz -C /root 

sleep 3
#编译安装
cd /root/"$nginxlevel"
./configure  --user=nginx  --group=nginx  --prefix=/usr/local/nginx  --conf-path=/etc/nginx/nginx.conf  --error-log-path=/var/log/nginx/error.log  --http-log-path=/var/log/nginx/access.log  --pid-path=/var/run/nginx/nginx.pid  --lock-path=/var/lock/nginx.lock  --with-http_stub_status_module  --with-http_ssl_module  --with-http_gzip_static_module  --with-pcre
make && make install
 
sleep 3
 
#删除无用文件和路径
rm -rf /root/"$nginxlevel" /root/"$nginxlevel".tar.gz
 
sleep 3
#设置nginx开机自启动
echo "#nginx开机自启动" >>/etc/rc.d/rc.local
echo "mkdir -p /var/run/nginx && touch /var/run/nginx/nginx.pid" >>/etc/rc.d/rc.local
echo "/usr/local/nginx/sbin/nginx" >>/etc/rc.d/rc.local
#重载配置文件
chmod +x /etc/rc.d/rc.local
 
#启动nginx
/usr/local/nginx/sbin/nginx
 
if [ $? -eq 0 ];
then
	echo "===============Nginx安装完毕==============="
	echo "================Nginx已启动================"
else
	echo "===============Nginx安装失败==============="
	echo "=============请检查系统环境配置============="
fi

}

uninstallnginx (){

dirnginx=$(whereis nginx | awk '{print $2}')
read -p "是否要卸载nginx 输入(y|n)确认! " answer
if [ ${answer} == y ];
then 
	rm -rf /run/nginx /etc/nginx /var/tmp/nginx /var/log/nginx /usr/local/nginx
	sleep 5
	#清空系统启动脚本中带有"nginx"的行
	sed -i "/nginx/d" /etc/rc.d/rc.local
	sleep 2
	#杀掉nginx进程
	pkill nginx
	if [[ $? -eq 0 ]]; 
	then
		echo ""
		echo "==========nginx 卸载成功!=========="
		echo ""
	else
		if [[ -z ${dirnginx} ]]; 
		then
			echo "您未安装nginx..."
		fi
	fi
elif [ ${answer} == n ];
then
	exit
else
	echo "输入(y|n)确认!"
	exit
fi
}

installredis (){

#redis的编译安装
redislevel=6.2.7
exist=$(whereis redis | awk '{print $2}')
 
fname=/root/redis-${redislevel}.tar.gz
 
#判断是否以root用户执行改脚本
if [ $UID -ne 0 ];
then
	echo "请用root用户执行$0"
	exit
fi
 
#判断是否安系统是否装过redis
if [ ! -z "${exist}" ]; 
then
	echo "您的系统已经部署过redis了..."
	echo "或您的系统还有redis残留文件..."
	echo "可以使用 "whereis redis" 和 "find / -name redis" 查找清空掉残留文件..."
	exit
fi
 
#检测网络通信情况
ping baidu.com -c4 > /dev/null
if [[ $? -ne 0 ]]; 
then
	echo "请检查网络连接情况后在执行$0..."
	exit
else
	echo "网络连接检测..."
	echo "OK!"
fi
 
echo "开始安装..."
 
#安装基础环境
yum install -y gcc wget
 
#判断目录下是否有这个文件没有就wget
if [[ ! -e ${fname} ]]; 
then
	wget -P /root http://download.redis.io/releases/redis-${redislevel}.tar.gz
	#判断下载是否成功
	if [[ $? -ne 0 ]]; 
	then
	    echo "=================redis软件包下载失败...================="
	    echo "=============请查看软件包版本配置是否正确==============="
	    echo ""
	    exit
	fi
fi
 
 
#解压至指定目录下
tar -zxvf /root/redis-${redislevel}.tar.gz -C /root
sleep 3
 
cd /root/redis-${redislevel}
make && make install PREFIX=/usr/local/redis
#安装路径可以自定义
cp /root/redis-${redislevel}/redis.conf /usr/local/redis/bin/
#修改redis.conf配置文件允许后台启动
sed -i 's/daemonize no/daemonize yes/g' /usr/local/redis/bin/redis.conf
sleep 3
#加入系统启动项
echo "[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target" >/etc/systemd/system/redis.service
 
sleep 2
#删除无用的文件
rm -rf /root/redis-${redislevel} /root/redis-${redislevel}.tar.gz
 
#启动redis服务
systemctl daemon-reload
systemctl enable redis.service
systemctl start redis.service
 
if [[ $? -eq 0 ]]; 
then
	echo ""
	echo "===============redis安装完毕==============="
	echo "================redis已启动================"
	echo ""
else
	echo ""
	echo "=============redis安装失败请检查配置...==============="
	echo ""
	rm -rf /etc/systemd/system/redis.service
	exit
fi
 
}

uninstallredis (){
	read -p "确认要卸载redis吗? {y|n} " answer
	if [[ ${answer} == y ]]; 
	then
		whereis redis | awk '{print $2}' | xargs rm -rf
		rm -rf /etc/systemd/system/redis.service
		pkill redis
		if [[ $? -eq 0 ]]; 
		then
			echo "redis 卸载成功!"
		else
			echo "redis 卸载失败!或您没有安装redis 请检查后再试"
		fi	
	elif [[ ${answer} == n ]]
	then
		exit
	else
		echo "输入 y or n 来确认是否卸载!"
	fi
}


PS3="输入1-6选择你要的服务: "
select i in "安装nginx" "卸载nginx" "安装redis" "卸载redis" "帮助" "退出脚本"
do
	case $i in
		安装nginx )
		installnginx
		;;
	
		卸载nginx )
		uninstallnginx
		;;

		安装redis )
		installredis
		;;

		卸载redis )
		uninstallredis
		;;

		帮助 )
		echo "$0 {1|2|3|4|5|6}"
		;;

		退出脚本 )
		exit
		;;

		* )
		echo "$0 {1|2|3|4|5|6}"
	esac
done

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值