shell日常脚本(centos6)

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

原文地址:https://www.cnblogs.com/pengrj/p/8890597.html