MySQL本地备份,异机备份数据库,并清除七天前的备份文件(前提是异机配置了免密)
#!/bin/bash
#name:bakmysql.sh
#This is a mysql backup
#本地存放备份数据库目录
backupdir=/bak/mysqlbak
#如果文件夹不存在,创建文件夹
if [ ! -d $backupdir ]; then
mkdir $backupdir
fi
#定义时间
time=` date +%Y%m%d%H `
#备份数据库到本地
/usr/bin/mysqldump -uroot -pqwer1234 --opt --all-databases > $backupdir/$time-all.sql
#只保留7天前的数据
find $backupdir -name "name_*.sql" -type f -mtime +7 -exec rm {} ; > /dev/null 2>&1
#把数据备份到异机
scp -r $backupdir root@192.168.24.150:/opt
本地备份,异机备份目录/www(前提是异机配置了免密)
#!/bin/bash
#name:wwwbackup
#This is a web Backup
#本地存放备份数据库目录
bkdir=/wwwbackup
#定义时间
time=` date +%Y%m%d%H `
#如果文件夹不存在,创建文件夹
if [ ! -d $bkdir ]; then
mkdir $bkdir
fi
#备份本地目录
tar zcvf $bkdir/$time-all.tar.gz /www
#把数据备份到异机
scp -r $bkdir root@192.168.24.150:/opt/
统计访问前10的ip五分钟内访问达到100报警
#!/bin/bash
#日志文件
logfile=/usr/local/nginx/logs/
#开始时间
start_time=`date -d"$last_minutes minutes ago" +"%H:%M:%S"`
#结束时间
stop_time=`date +"%H:%M:%S" -d '+5 minute'`
#过滤出单位之间内的日志并统计最高ip及访问次数
tac $logfile/access.log | awk -v st="$start_time" -v et="$stop_time" '{t=substr($4,RSTART+14,21);if(t>=st && t<=et) {print $0}}' | awk '{print $1}' | sort | uniq -c | sort -nr > $logfile/log_ip_top10
ip_top=`cat $logfile/log_ip_top10 | head -1 | awk '{print $1}'`
# 单位时间[5分钟]内单ip访问次数超过100次,则触发邮件报警
if [[ $ip_top -gt 100 ]];then
echo "发现短时间内大量访问的ip"|mail -s "网站访问警告" 623181912@qq.com
fi
实现判断10.0.0.0/24网络里,当前在线的IP有哪些,能ping通则认为在线
#!/bin/bash
for ip in `seq 1 255`
do
{
ping -c 1 10.0.1.$ip > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo 10.0.0.$ip UP
else
echo 10.0.0.$ip DOWN
fi
}&
done
wait
使用for循环批量配置用户
#!/bin/sh
for i in `seq 1 5` #赋值i 1-5
do #做
useradd -G wheel student$i; #新建用户并加到wheel组
echo "123456" |passwd student$i --stdin; #设置密码
#换成下面这个密码为student$i后面跟5个随机字符
#echo "student$i:`echo $RANDOM|md5sum|cut -c 1-5`"|passwd –stdinuser$i>/dev/null 2>&1
done 结束
nginx日志切割脚本
#!/bin/bash
# 设置日志文件存放目录
logs_path="/usr/local/nginx/logs/"
# 设置pid文件路径为变量
pid_path="/usr/local/nginx/logs/nginx.pid"
# 重命名日志文件
#"yesterday“备份昨天的日志
#mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday" +"%Y%m%d").log
#备份当前的日志文件
mv ${logs_path}access.log ${logs_path}access_$(date +"%Y%m%d").log
# 向nginx主进程发信号重新打开日志
kill -USR1 `cat ${pid_path}`
查看nginx状态,如果没启动或者挂了,自动启动
#!/bin/sh
service nginx status
if [ $? -ne 0 ];
then
service nginx start
echo "已重新开启nginx"
fi