直接上代码,注释很清晰,不清楚可以给笔者留言
******可以用来个性化替换(个人项目名称及日志名称不便展示),提供普通连接模式,和个人项目便捷存储连接,高级可能发布到网站上使用,后续继续更新!
import paramiko
import numpy as np
import socket
import uuid
import os
class Game_connect(object):
''' 属性:
self.hostname_1 ******连接地址
self.remote_file_1 ******日志地址
self.port ******端口号
self.username ******登录用户名
self.password ******登录密码
方法:
read(self,hostname,port,username,password,remote_file) 连接到服务器并读取文件
write(self,test,logs_name) 文件下载并存到本地
input_write(self) 接收输入
choose(self) 选择日志获取类别、方式
logs_get(self,logs_get) ******日志拉取
help_logs(self) ******日志拉取提示页
yesitis(self) 普通方式拉取文件
'''
def __init__(self):
self.hostname_2 = ["192.168.***.***","192.168.***.***","192.168.***.***","192.168.***.***"]
self.hostname_1 = np.array(self.hostname_2)
self.port = 22
self.username = "root"
self.password = "******"
self.password_2 = "******"
self.remote_file_2 = ["/srv/logs/******.log","/srv/logs/******.log",
"/srv/logs/******.log","/srv/logs/******.log",
"/srv/logs/******.log","/srv/logs/******.log",
"/srv/logs/******.log","/srv/logs/******/******.log",
"/srv/logs/******.log"]
self.remote_file_1 = np.array(self.remote_file_2)
def read(self,hostname,port,username,password,remote_file):
# # 服务器信息,主机名(IP地址)、端口号、用户名及密码
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
client.connect(hostname, port, username, password, compress=True)
except socket.gaierror:
print("请重新输入,信息有误")
self.yesitis()
#except paramiko.ssh_exception.AuthenticationException:
#print("由于该服务器上程序没有开启,该服务器上日志获取已停止")
sftp_client = client.open_sftp()
remote_file = sftp_client.open(remote_file) # 文件路径
count = 1;
line_1 = [] # 日志存储字符串
try:
for line in remote_file:
count = count + 1
line_1.append(line)#存字符为字符串
line_2 = np.array(line_1) # 字符串转数组
print(line_2) # 打印数组即打印日志
finally:
remote_file.close()