2020-10-29

   日期:2020-10-30     浏览:138    评论:0    
核心提示:实验一:Nginx服务管理脚本请准备一台服务器,在服务器上使用源码安装nginx,成功启动并访问到nginx为更方便的启动或者停止 nginx,请请根据要求,编写脚本实现如下的功能:1.定义启动Nginx函数,要求:函数中需要判断nginx 的pid文件是否存在,若存在则提示: Nginx已经启动…若Nginx未启动,则执行检测配置文件,检测通过后执行启动nginx启动后判断nginx的pid文件是否创建成功,若创建成功,则提示nginx启动成功!否则提示nginx启动失败2.定义关闭 Ngi

实验一:Nginx服务管理脚本
请准备一台服务器,在服务器上使用源码安装nginx,成功启动并访问到nginx
为更方便的启动或者停止 nginx,请请根据要求,编写脚本实现如下的功能:
1.定义启动Nginx函数,
要求:
函数中需要判断nginx 的pid文件是否存在,若存在则提示: Nginx已经启动…若Nginx未启动,则执行检测配置文件,检测通过后执行启动nginx
启动后判断nginx的pid文件是否创建成功,若创建成功,则提示nginx启动成功!否则提示nginx启动失败
2.定义关闭 Nginx函数,
要求:
可以正确通过pid文件判断nginx服务是否已经停止,若已停止,则提示:nginx已经停止…
nginx在停止后判断pid文件是否已经成功被删除,若成功删除则提示: nginx停止成功
3.定义重新载入 Nginx函数
4.判断用户的传递的参数,可以实现:start、stop、restart、reload和其他的参数判断,
传递对应的参数,实现对应的功能,若传递错误的参数,则提示用户使用方法:Usage: nginx {start]stop/lrestartlreload}

#!/bin/bash
install_nginx(){ 
	groupadd www
	useradd -s /sbin/nologin -g www www
	yum install gcc-c++  pcre pcre-devel zlib zlib-devel
	cd /usr/local/src
	tar zxvf nginx-1.12.2.tar.gz 
	cd nginx-1.12.2
	./configure --user=www --group=www --prefix=/usr/local/nginx 
	make && make install
}
start_nginx(){ 
	netstat  -lptnu|grep 80
	if [ $? -eq 0 ]; then
		echo "nginx 已经正常运行了"
	else
		/usr/local/nginx/sbin/nginx
	fi
}
stop_nginx(){ 
	pgrep nginx
	if [ $? -eq 0 ]; then
		echo "开始停止服务...."
		pkill nginx
	fi

}
reload_nginx(){ 
	 /usr/local/nginx/sbin/nginx -s reload
}
while :
do
	read -p "请输入您想要执行的操作:<<" cmd
	case $cmd in
		start)
			start_nginx	
		;;
		stop)
			stop_nginx
		;;
		restart)
			stop_nginx
			start_nginx
		;;
		reload)
			reload_nginx
		;;
		quit)
			exit
		;;
		*)
			echo "使用方法:Usage: nginx {start|stop|restart|reload}"
		;;
	
	esac
done

实验二:批量创建系统用户脚本
请开发脚本实现如下功能,所有功能都需要执行脚本验证:1.通过交互获取需要创建用户的数量
2.用户创建之前要判断用户是否已经存在,若用户已经存在则跳过
3.在创建用户的同时为用户设置密码,密码为随机字符串,不得少于8位
4.最后在创建完毕后需要有提示:成功创建多少个用户,创建失败有多少用户
5.所有创建成功的用户名和密码要保存在:userlist文件中!

#!/bin/bash
read -p "请输入您想要创建的用户数:<<" num
for((i=1;i<=$num;i++))
do
	id hehe$i
	if [ $? -eq 0 ]; then
		echo "hehe$i 已经存在"
	else
		let sum++		
		pwd=$(openssl rand -hex 4)
		useradd hehe$i;echo "$pwd"|passwd --stdin hehe$i
		echo "成功创建了$sum个用户"
	fi
	grep -w "hehe$i" /tmp/uselist
	if [ $? -ne 0 ]; then
		echo "hehe$i $pwd" >> /tmp/uselist
	fi

done
cat /tmp/uselist

实验三:MySQL备份+异地备份脚本
请开发脚本实现如下功能:所有功能都需要执行脚本验证
准备两台服务器,一台为数据库服务器,一台为异地备份服务器
1.通过端口是否监听判断MySQL 服务是否在运行,若未运行,输出提示并退出脚本!若正在运行输出MySQL运行正常
2.通过传参获取需要备份的数据库,将所有获得的参数保存在数组:dblist中
3.使用循环遍历数组dblist,将数据库备份在/home/backup目录下,备份的文件需要压缩,文件名需要添加时间戳
4.备份过程需要判断数据库是否备份成功!若未备份成功需要发送邮件通知管理员
5.将每天备份成功的文件使用scp传输到异地备份服务器的:/opt/mysql_databases_backup目录下!
6.在使用scp 发送文件过程中产生的交互,需要使用expect来自动完成
7.添加计划任务,脚本每天的凌晨两点执行

#!/bin/bash
date=$(date "+%Y-%m-%d")
#验证服务是否正常运行
netstat  -lptnu|grep 3306 >/dev/null
if [ $? -eq 0 ]; then
	echo "mysql 正在运行"
else
	echo "mysql 未运行"
	exit
fi
#输出当前所有的db
cur_db=$(mysql -e "show databases;"|sed '1d')
echo  "当前存在的db包括:${cur_db}"

#获取标准输入的值
read -p "需要备份的数据库:<<" db
#创建备份目录
if [ ! -d /home/backup/ ]; then
       mkdir -p /home/backup/
fi    

#遍历
dblist=($db)
for db in ${dblist[@]}
do          
        mysqldump -ubackup -p123 -h 192.168.10.130 -B $db --skip-lock-tables > /home/backup/$db.sql

        cd /home/backup/
        tar zcvf $date.$db.tar.gz $db.sql 
	#验证备份文件 
	find /home/backup -name $date.$db.tar.gz > /dev/null
	if [ $? -eq 0 ]; then
		echo "$date.$db.tar.gz 备份成功"
		echo "mysql备份成功了!!"|mail -s "mysql 备份" 34704286@qq.com
	else	
		echo "mysql备份失败!!"|mail -s "mysql 备份" 34704286@qq.com
	fi
done

#scp远程备份
/usr/bin/expect <<eof spawn scp /home/backup/$date.$db.tar.gz 192.168.10.131:/opt/mysql_databases_backup expect "password" send "123456\n" expect eof eof

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服