开发人员时常需要运维同学在测试版本发布完成后取一下应用日志供他们分析版本问题。问题是十几个开发人员组成的团队对接一个版本运维同学,频繁的取日志让人很痛苦,同时开发的同学不懂linux系统,所以又不能将session直接给他们进行日志下载,在有人感觉烦的一批的时候,我使用python写了个windows下直接去日志的脚本。只需要运行一下就把weblogic的每个server的日志下载下来了,感觉还是比较方便的,脚本如下:
import paramiko
import time
#获取服务器日志目录
pathlist=['gxyt_svr001','fxqb_svr001','jcxaaqyp_svr001','sjzlpt_svr001','yhhx_svr001','zzsfpfxjk_svr001']
base_path='/weblogic/user_projects/sc_domains/tygzpt_sc_domain/logs/'
logtime = time.strftime("%Y%m%d%H%M%S")
#创建连接
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname='12.12.12.12', port=22, username='root', password='****', timeout=10)
log_path=[]
for lognm in pathlist:
log_path.append(base_path + lognm + '/' + lognm + '_sword.log')
#print(log_path)
for lognb in range(len(log_path)):
# print(log_path[lognb])
# print(pathlist[lognb])
shell = 'tail -100 ' + log_path[lognb] + ' >' + pathlist[lognb] + logtime + '.log'
# print(shell)
stdin, stdout, stderr =client.exec_command('cd /weblogic/user_projects/sc_domains/tygzpt_sc_domain/logs/' + pathlist[lognb] + ';' + shell, get_pty=True)
localfile = r'C:\Users\lenovo\Desktop\ftp1\\' + pathlist[lognb] + logtime + '.log'
# print(localfile)
getlog = paramiko.Transport(('99.12.140.60',22))
getlog.connect(username='root',password='express')
sftp = paramiko.SFTPClient.from_transport(getlog)
sftp.get(log_path[lognb],localfile)
getlog.close()
client.close()
上面这个脚本的局限性是只能下载一台服务器的对应日志目录的log,而且有部分是网上搜的内容,总体来说可以使用。对于我这么一个刚入门的python写手来说,感觉可以了。