暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
python监控机器脚本.txt
51
3页
5次
2022-12-15
5墨值下载
import re
import datetime
import paramiko
import os
import time
import json, requests
class MachineMonitor():
def __init__(self, time_flag, filename):
# 初始化一个全局的时间标记
self.time_flag = time_flag
# 获取文件名
self.filename = filename
# 字符串转时间
def TimeToTime(self, time):
time = datetime.datetime.strptime(time, "%Y-%m-%d %H:%M:%S,%f")
return time
# 连接远程服务器并下载日志文件
def SSHtoServer(self):
# 创建 ssh 对象
ssh = paramiko.SSHClient()
# 指定连接方式
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 用于远程连接的 Linux 主机:{IP 地址:密码}
ip = {"11.215.0.205": "Jxyc@52072"}
error_ip = {}
for k, v in ip.items():
try:
print('开始远程连接服务器...')
# “2030”参数是远程主机的 ssh 端口号,“neimeng”参数是连接远程主机的账号名,根据实际情
况修改
ssh.connect(k, 2030, "neimeng", v)
# 创建 sftp 客户端会话
sftp = ssh.open_sftp()
# 远程 Linux 机器文件下载到本地
# 参数 1:远程 Linux 文件路径(包含文件名称),参数 2:本地文件路径(包含文件名称)
sftp.get(r"/home/neimeng/"+self.filename, self.filename)
print(k, "文件获取成功!")
except Exception as e:
print(k, "获取失败")
print(e)
error_ip[k] = v
# 如果连接失败则再次进行连接,超过 20 次连接失败则不再重试
if len(error_ip) > 0:
print("重新测试获取失败服务器...")
for k, v in error_ip.items():
count = 1
for i in range(19):
try:
ssh.connect(k, 22, "root", v)
# 创建 sftp 客户端会话
sftp = ssh.open_sftp()
sftp.get(r"/home/neimeng/"+self.filename, self.filename)
print(k, "成功!")
break
except Exception as e:
print(k + "重连第" + str(count) + "次失败")
count += 1
if count == 20:
print(k + "已超过 20 次连接未成功,请检查服务器")
print(e)
# 读取日志文件并进行比对
def ReadQuery(self):
with open(self.filename, 'r') as f:
# 按行读取
line = f.readline()
while line:
# print(line)
# 检测读取的日志是否是要比对的日志
if 'SubstrateID' in line and 'Eq2EqID' in line:
# print(line)
# 分割日志内容,提取有效信息
dict_line = line.split(' ')
# 获取日志时间
log_time = dict_line[0] + " " + dict_line[1]
log_time = self.TimeToTime(log_time)
# 检查该日志是否已经读取过
if self.time_flag < log_time:
# 提取两串数字
SubstrateID = re.sub(r'\D', "", dict_line[55])
Eq2EqID = re.sub(r'\D', "", dict_line[60])
# 比对两串数字是否相等
if SubstrateID != Eq2EqID:
error_message = '------读码不一致告警------\n 时间:' +
str(log_time) + '\n 日志:' + self.filename + '\nmessage:' + line
print(error_message)
# 不相等则发送钉钉告警
self.SendDing(error_message)
# 更新时间标记
self.time_flag = log_time
# print(self.time_flag)
line = f.readline()
f.close()
return self.time_flag
# 删除从远程服务器下载的日志文件
def DelFile(self):
if os.path.exists(self.filename): # 如果文件存在
# 删除文件
os.remove(self.filename)
print('已删除文件')
of 3
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜