一、文件目录案例
Ⅰ、文件目录按关键词备份迁移
#!/usr/bin/env python # -*- coding:utf-8 -*- import os import shutil # # 处理文件及目录 # @a_srcPath 目录路径 # # copyOrMove 复制操作还是移动操作 False为复制操作,True为移动操作 allfile = [] def handle_dir(a_srcPath, a_findKey, a_copyOrMove=False): srcPathList = os.listdir(a_srcPath) #print(str(srcPathList)) for sPath in srcPathList: filepath = os.path.join(a_srcPath, sPath) # print("filepath="+filepath) # 判断是目录 if os.path.isdir(filepath): handle_dir(filepath, a_findKey, a_copyOrMove) if filepath.find(a_findKey)>=0: len_asrcPath = len(srcPath_root) destPath= destPath_root+filepath[len_asrcPath:] # destPath = filepath #print("destPath="+destPath) #print("filepath=" + filepath) allfile.append(destPath) if a_copyOrMove: shutil.move(filepath, destPath) #移动目录 else: shutil.copytree(filepath, destPath) #复制目录 return allfile findKey='2018-' srcPath_root='/home/mysoft/attachments' destPath_root='/home/mysoft/bk/attachments_history/'+findKey allfiles=handle_dir(srcPath_root,findKey,False) for item in allfiles: print(item)
Ⅱ、日志切割
import os, sys, datetime,re # nginx日志存放的路径 nginxLogPath="/opt/nginx-1.9.5/logs/" # 获取昨天的日期 yesterday = (datetime.date.today() + datetime.timedelta(days = -1)).strftime("%Y-%m-%d") # nginx启动的pid文件 PID = "/var/run/nginx.pid" def cutNginxLog(path): """ 切割nginx日志函数 :param path: 日志文件的第一级目录 :return: """ logList = os.listdir(path) # 判断传入的path是否是目录 for logName in logList: # 循环处理目录里面的文件 logAbsPath = os.path.join(path, logName) if os.path.isdir(logAbsPath): # 如果是目录,递归调用自己,继续处理 cutNginxLog(logAbsPath) else: # 如果是日志文件,就进行处理 # 分割日志 re_Num = re.compile(r'^[a-zA-Z]') # 判断日志文件是否是字母开头,如果是日期开头就不切割 if re_Num.search(logName): logNewName = yesterday + "_" + logName # 新日志文件名称列如:2018-11-8_access.log oldLogPath = os.path.join(path, logName) # 旧日志文件绝对路径 newLogPath = os.path.join(path, logNewName) # 新日志文件绝对路径 os.rename(oldLogPath, newLogPath) cmd = " kill -USR1 `cat %s` "% PID res = os.system(cmd) if res != 0: return "重新加载nginx失败" cutNginxLog(nginxLogPath)
二、监控案例
Ⅰ:监控端口
#验证端口是否正常<br>import socket def get_ports(port): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) result = sock.connect_ex(('127.0.0.1',port)) print(result) #输出返回码 if result != 0: send_data = "服务器的%d",port,'端口挂了,快去修复哈' print (send_data) else: print("端口:",port,"正常")