工作,学习,生活,这里将会有一些记录. 备用域名:http://meisw.51099.com 注册 | 登陆
浏览模式: 标准 | 列表分类:脚本代码

定期清除主mysql里的日志文件

#!/bin/bash
# water QQ:5846690
MYSQL="/www/servers/mysql"
MYSQL_BIN=$MYSQL/bin/mysql
MYSQL_DATA=$MYSQL/var
USER="root"
PASS="password"
CFL="/tmp/mm.log"

function SAVE_CF {
        $MYSQL_BIN -u$USER -p"$PASS" -e "show master status\G" | grep "File:" | awk -F": " '{print $2}' > $CFL
        echo "save cf sucess"
}

if [[ -f $CFL ]];then
        CF=`cat $CFL`
        if [[ -f $MYSQL_DATA/$CF ]];then
                $MYSQL_BIN -u$USER -p"$PASS" -e "PURGE MASTER LOGS TO '$CF';"
                echo "del log sucess"
        fi
        SAVE_CF
else
        SAVE_CF
fi

加入cron,每周执行一次

05 3 * * 1 root /bin/mysql_log_clear.sh

shell产生随机数,字符串

#!/bin/bash
MATRIX="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz~!@#$%^&*()_+="
LENGTH="9"
while [ "${n:=1}" -le "$LENGTH" ]
do
        PASS="$PASS${MATRIX:$(($RANDOM%${#MATRIX})):1}"
        let n+=1
done
        echo "$PASS"
exit 0

 

或用mkpasswd

echo $RANDOM,产生数字串

 

封超过100个连接的IP

封超过100个连接的IP:

#!/bin/sh
/bin/netstat -na|grep ESTABLISHED|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -rn|grep -v -E '172.16|127.0'|awk '{if ($2!=null && $1>100) {print $2}}'>/tmp/dropip
for i in $(cat /tmp/dropip)
do
/sbin/iptables -I INPUT  -p tcp -m tcp -s $i --dport 80 --syn -j REJECT
echo "$i kill at `date`">>~river/ddos
done

利用tcpdump简易抓取MySQL Query Log

原文参考:http://www.davidodwyer.com/category/tags/tcpdump-mysql

#!/bin/bash
tcpdump -i eth0 -s 0 -l -w - dst port 3306 | strings | perl -e '
while(<>) { chomp; next if /^[^ ]+[ ]*$/;
if(/^(SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER|CALL)/i) {
if (defined $q) { print "$q\n"; }
$q=$_;
} else {
$_ =~ s/^[ \t]+//; $q.=" $_";
}
}'

一个比较全面的创建 XMLHttpRequest 的代码:


function getXmlHttpPrefix() {
if (getXmlHttpPrefix.prefix)
return getXmlHttpPrefix.prefix;

var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
var o;
for (var i = 0; i < prefixes.length; i++) {
try {
// try to create the objects
o = new ActiveXObject(prefixes[i] + ".XmlHttp");
return getXmlHttpPrefix.prefix = prefixes[i];
}
catch (ex) {};
}

throw new Error("Could not find an installed XML parser");
}

//////////////////////////
// Start the Real stuff //
//////////////////////////


// XmlHttp factory
function XmlHttp() {}

XmlHttp.create = function () {
try {
if (window.XMLHttpRequest) {
var req = new XMLHttpRequest();

// some versions of Moz do not support the readyState property
// and the onreadystate event so we patch it!
if (req.readyState == null) {
req.readyState = 1;
req.addEventListener("load", function () {
req.readyState = 4;
if (typeof req.onreadystatechange == "function")
req.onreadystatechange();
}, false);
}

return req;
}
if (window.ActiveXObject) {
return new ActiveXObject(getXmlHttpPrefix() + ".XmlHttp");
}
}
catch (ex) {}
// fell through
throw new Error("Your browser does not support XmlHttp objects");
}; 

-------------------------------

var xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
var xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
var xmlHttp=new ActiveXObject("MSXML.XMLHTTP");
var xmlHttp=new ActiveXObject("MSXML3.XMLHTTP");
这几个代码都有可能, 上面的代码就遍历这些对象选择一个创建成功的出来, 区别就是操作系统带的 MSXML 包的版本不一样, 这些包是 ActiveX 控件, IE 和很多 Windows 应用都可能用到它. 对于 Mozilla, Firefox, 直接用
var xmlHttp = new XMLHttpRequest();
就可以了.

一个备份脚本(转)

mybackup.sh
#!/bin/sh
umount /mnt/bak
mount /dev/sdb1 /mnt/bak

if [ `date +%d` = '01' ]   #每月1号进行完全备份
then
  bakdir="/mnt/bak/daybak/month/"`date +%m%d`
  zl=""  #进行完全备份
else
  bakdir="/mnt/bak/daybak/"`date +%d`
  zl="-N "`date +'%Y-%m-01 00:00:01'`;                 #差异备份
 #zl="-N "`date -d '-1 day' +'%Y-%m-%d 00:00:01'`     #日增量备份
fi

tmpbakdir=${bakdir}tmp
rm -rf ${tmpbakdir}
mkdir ${tmpbakdir}
tar "${zl}" -czf ${tmpbakdir}/www.tgz /var/www/html
tar "${zl}" -czf ${tmpbakdir}/etc.tgz /etc
tar "${zl}" -czf ${tmpbakdir}/mysql.tgz /var/lib/mysql
tar "${zl}" -czf ${tmpbakdir}/home.tgz /home
tar "${zl}" -czf ${tmpbakdir}/name.tgz /var/name
rm -rf $bakdir
mv $tmpbakdir $bakdir
umount /mnt/bak

把mybackup.sh 放到 /etc/cron.daly 中即实现可月循环 差异/增量 备份
为方便恢复数据我使用了差异备份,如果想节约空间可以使用日总量备份,不过那样恢复数据时刻就要麻烦点了,另外你也可以很容易把上面的脚本改为周循环

事项增量备份的另外方法是利用find命令,
例如只备份一天前修改过的文件
find /var/www -type f -mtime -1 -print>/tmp/filelist.txt 
tar -cz -T /tmp/filelist.txt -f /mnt/bak/www.tgz

一些很简单的脚本

想知道系统每天的每个时间的负载,内存使用,可总不能整天都连着终端看吧.那有什么办法呢?很简单,可以用下面的shell,加入crontab,每10分钟或一段时间,运行一次,保存到一个文本文件,到时查看这个文本文件就知道一天下来,系统的大概负载情况了.如果你要得更完美一点,可以根据这些数据,用PHP画个图片来.我懒,只想知道结果,不求漂亮,哈哈

#!/bin/bash
dt=`date '+%Y%m%d'`
ct=`date '+%H%M'`
uptime >> /www/$dt"_c.txt"

echo $ct >> /www/$dt"_m.txt"
free -mt | grep "Mem" >> /www/$dt"_m.txt"

 

FTP自动上传

#!/bin/bash
ftp -n<<!
open IP 21
user username password
prompt
binary
cd path
mput *.tar.gz
close
bye
!

Mysql 数据库在Linux下的自动备份SHELL

MYSQL的自动备份脚本,已测试通过。

可以将这个脚本放进crontab,每天凌晨执行一次,自动备份将生成压缩文件 。

只保留最近七天的备份在服务器上

这是我写的第一个脚本,欢迎大家指正。

这里主要参考了aspbiz 的贴子:http://www.chinaunix.net/jh/17/418474.html

以下是脚本内容:

Start---------------------------------------------------------------------------

#!/bin/bash
#This mysql backup script for  daily
#environment:redhat as 4
#Powered by灰熊
#2007-10-31


#定义有备份的数据库名
dbname=mysql

#定义备份数据库时使用的用户名和密码
dbuser=root
dbpasswd=12345a

#数据库备份的路径
backuppath=/tmp/db/

#数据库备份日志文件存储的路径
logfile=/tmp/db/db.log

#以当前的时间作为备份的数据库命名。
dumpfile=$(date +%y%m%d%H%M)

#这个函数用来备份数据库
back_db()
{
   #将备份的时间、数据库名存入日志
   echo $(date +%y%m%d%H%M)" Beginning database "${dbname}" backup-----------------------------------" >>${logfile}

  #备份数据库,如果有错误信息也记入日志。
  mysqldump -u${dbuser} -p${dbpasswd} ${dbname} >${backuppath}${dumpfile}.sql 2>> ${logfile}

  #将备份数据库文件库压成ZIP文件,并删除先前的SQL文件。如果有错误信息也记入日志。
  tar zcvf ${dumpfile}.tar.gz ${dumpfile}.sql && rm ${dumpfile}.sql 2>> ${logfile}

  #将压缩后的文件名存入日志。
  echo "backup file name:"$(date +%y%m%d%H%M)".tar.gz" >>${logfile}
  echo -e "------------------------------\n" >>${logfile}
}

#这个函数用来删除七天前的数据,注意,这个脚本会删除当前目录下所有的早于七天前的文件,如果把目录搞错了。。。。。。。。。
rm_oldfile()
{
  #查找出当前目录下七天前生成的文件,并将之删除
  find ./ -type f -mtime +7 -exec rm {} \;
}


#切换到数据库备份的目录。如果不做这个操作,压缩文件时有可能会错误
cd ${backuppath}

#运行备份数据函数
back_db

#运行删除文件函数
rm_oldfile

end---------------------------------------------------------------------------
 
 
建议到mysql的man目录下的man1下面执行一下man ./mysqldump.1 看一下里面的内容!
合并成一句
mysqldump .....  | gzip -q --best  > xxx.gz
 
 
建议把db的name写到一个文本里面,然后增加需要备份的库的时候就可以修改文本了.不需要再修改程序
for dbname in `cat dbnamelist.txt`; do
//backup functions
done
 
 
转自CU,觉得还不错