各种常用脚本 Tips:持续更新中...

本文提供了一份Nginx日志切割脚本及系统健康检查脚本,包括CPU使用率、内存占用率和磁盘空间监测,并通过邮件报警。此外还介绍了一个基于Python的脚本用于从数据库读取IP并更新iptables。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Nginx日志切割
#!/bin/bash
s_log=/usr/local/nginx/logs/access.log
d_log=/usr/local/nginx/logs/access`date +%Y%m%d`.log
mv $s_log $d_log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
健康检测
 #!/bin/bash 
#this is a system infomation script.
#histroy 2019-4-11
CPUDoage=`expr 100 - $(mpstat | tail -1 | awk '{print $12}' | awk -F. '{print $1}')`
Usedmemory=`free -m | egrep "Mem" | awk '{print $3}'`
Totalmemory=`free -m | egrep "Mem" | awk '{print $2}'`
onlymemory=`expr $Usedmemory \* 100 / $Totalmemory`

diskused=`df -h | egrep "/$" | awk '{print $5}' | awk '{print $1}'`
diskused2=`df -h | egrep "/$" | awk '{print $5}' | awk '{print $1}' | awk -F% '{print $1}'`
onlydiskused=`df -h | egrep "/$" | awk '{print $5}'`

echo -e "\033[36m+++++++++++++++++++++++++++++++++ \033[0m" 
echo "This is CPU Dosage info." 
echo ""
echo "Your CPU already used $CPUDoage %"

echo -e "\033[36m+++++++++++++++++++++++++++++++++ \033[0m" 
echo "This is memory info."
echo ""
echo "Your Memory used $onlymemory %"

echo -e "\033[36m+++++++++++++++++++++++++++++++++ \033[0m" 
echo "This is disk info."
echo ""
echo "Your disk used $diskused "
echo ""

if [ $diskused2 -gt 10 ]
then
    echo -e "\033[31mWarning : Your Disk soon full.\033[0m"
	mail -s "disk"  127.0.0.1 < /tmp/disk.txt
elif [ $onlymemory -gt 90 ]
then
    echo -e "\033[31mWarning : Your Memory soon full.\033[0m"
	mail -s "memory"  127.0.0.1 < /tmp/memory.txt
elif [ $CPUDoage -gt 90 ]
then
    echo -e "\033[31mWarning : Your CPU soon full.\033[0m"
	mail -s "cpu"  127.0.0.1 < /tmp/cpu.txt
fi
Jenkins回滚脚本
#!/bin/bash 

export program_path="$1"
export archive_path="$2"
export source_path="$3"
export date="$4"
export ACTION="$5" 
echo ${ACTION}

export start_file="/usr/bin/supervisorctl" 
export source_backup="/data/src/lotterybackup"
export program_backup="/opt/lotteryTicket/backup"

[ ! $1 ] && exit
[ ! $2 ] && exit 
[ ! $3 ] && exit 
[ ! $4 ] && exit 
[ ! $5 ] && exit 
#program_path='/opt/lotteryTicket'
#
#archive_path="/usr/local/jenkins_data/workspace/test17_lottery-Ticket_172.16.10.96"
#
#source_path="/data/src/lotteryTicket"
#
#date=`date +%F-%H-%M`

#now funcation
source_backup () {
	[ -d ${source_backup} ] || mkdir ${source_backup}
	[ -d ${program_backup} ] || mkdir ${program_backup}
	tar cf lotteryTicket-${date}.tar.gz ${source_path}/  
	mv lotteryTicket-${date}.tar.gz ${source_backup} && cd ${source_backup} && rm -f `ls -t ${source_backup:=UNSET} | tail -n +3`
	cp -f ${source_path}/lotteryTicket ${program_path}/
	cp -f ${program_path}/lotteryTicket ${program_backup}/lotteryTicket-${date} && cd ${program_backup} && rm -f `ls -t ${program_backup:=UNSET} | tail -n +3`  
	cd ${program_path} && ${start_file} restart lotteryTicket	
	
}


#backup funcation
backup_funcation () {
	cd ${program_path} && rm -f ${program_path}/lotteryTicket
	ln -s ${program_backup}/`ls -t ${program_backup}/ | head -n +1` ${program_path}/lotteryTicket
	cd ${program_path} && ${start_file} restart lotteryTicket	
}

case $ACTION  in 
	now)
		source_backup 
	;;	
	backup)
		backup_funcation
	;;
esac
将数据库IP写入iptables
# coding=utf-8
import pymysql
import os

class iptable_check:
	global db
	global cursor
	global ip_list
	db = pymysql.connect("localhost", "root", "123", "firewalld", charset='utf8')
	cursor = db.cursor()
	ip_list = []

	def __init__(self):
		print ("---"*20)


	def mysqlDb(self,sql):
		try:
			cursor.execute(sql)
			db.commit()
		except:
			db.rollback()
			print("Update comm get some probelm.")

	def cursorDelete(self,row,ck):
		ip = row[0]
		port = row[1]
		state = row[2]
		ipId = row[3]
		os.system("sed -i '/"+str(ip)+"\/24 --dport "+str(port)+" -j ACCEPT/d'  iptables")
		sql = "DELETE FROM iptable_manage WHERE id = '"+str(ipId)+"'"   
		ck.mysqlDb(sql)

	def cursorSelect(self):
		sql = "SELECT ip,port,state,id as ipId FROM iptable_manage"
		try:
			cursor.execute(sql)
			results = cursor.fetchall()
			for row in results:
				entity = [row[0],row[1],row[2],row[3]]
				ip_list.append(entity)
			print("end:"+str(ip_list))
		except:
			print ("Error: unable to fecth data")
	
	def addIptable(self,row,ck):
		ip = row[0]
		port = row[1]
		state = row[2]
		ipId = row[3]
		os.system("sed -i '/COMMIT/i\-A INPUT -p tcp -m state --state NEW -m tcp -s "+str(ip)+"/24 --dport "+str(port)+" -j ACCEPT' iptables")
		sql = "UPDATE firewalld.iptable_manage SET state = '1' where id = "+str(ipId)
		ck.mysqlDb(sql)

	def cursorChange(self):
		ck = iptable_check()
		ck.cursorSelect()
		for row in ip_list:
			if row[2] == 0:
				ck.addIptable(row,ck)
			elif row[2] == 2:
				ck.cursorDelete(row,ck)

	
ck = iptable_check()
ck.cursorChange()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值