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 客户端会话
评论