# coding=utf-8
# coding=utf-8
'''
根据时间检测log日志文件日期,并自动打包压缩
'''
import paramiko, time, datetime, base64
def days_ago():
'''
获取当前日期前30天日期, 不算当天, 返回 list
:return:
'''
today = time.strftime('%Y,%m,%d') # <class 'str'>
t = time.strptime(today, '%Y,%m,%d') # # <class 'time.struct_time'>
y, m, d = t[0:3]
# print(y, m, d)
thirty_days_list = []
for dd in range(1, 0, -1):
Date = str(datetime.datetime(y, m, d) - datetime.timedelta(dd)).split()
days_b = Date[0] # .replace('-', '') # <class 'str'>
thirty_days_list.append(days_b)
return thirty_days_list
# 远程登陆操作系统
def ssh(sys_ip, username, password):
# try:
before_date_int = int(days_ago()[0].replace('-', ''))
# 创建ssh客户端
client = paramiko.SSHClient()
# 第一次ssh远程时会提示输入yes或者no
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 密码方式远程连接
client.connect(sys_ip, 22, username=username, password=base64.b64decode(password).decode(), timeout=20)
# 互信方式远程连接
# key_file = paramiko.RSAKey.from_private_key_file("/root/.ssh/id_rsa")
# ssh.connect(sys_ip, 22, username=username, pkey=key_file, timeout=20)
# 执行查询命令
stdin, stdout, stderr = client.exec_command('cd /opt/gh2/app/HistoryPrices-py/mmbuy_logs/;ls')
# 获取查询命令执行结果,返回的数据是一个list
result_ls = stdout.readlines()
# print('ls: ', result)
# print(type(result))
result_tar = None
for one_log in result_ls:
if len(one_log) <= 12:
one_log_file = one_log.replace('\n', '')
if int(one_log_file.replace('-', '')) < before_date_int:
stdin, stdout, stderr = client.exec_command('cd /opt/gh2/app/HistoryPrices-py/mmbuy_logs/;tar -zcvf {}.tar.gz {};rm -rf {};ls'.format(one_log_file, one_log_file, one_log_file))
result_tar = stdout.readlines()
# print('tar: ', result)
print(sys_ip, '\n压缩前:', result_ls, '\n压缩后:', result_tar, '\n\n\n')
# return result
# except Exception as e:
# print(e)
# finally:
client.close()
if __name__ == "__main__":
sys_ip_list = ['127.0.0.1']
username = "***"
password = "***"
for sys_ip in sys_ip_list:
ssh(sys_ip, username, password)
# print(int(days_ago()[0].replace('-', '')))
#