Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import paramiko
- import select
- import re
- lst=['192.168.0.1','192.168.0.2','192.168.0.3']
- com = 'ls /home/servers/logs/ | grep Application'
- def SSH(server_address):
- ssh = paramiko.SSHClient()
- ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
- ssh.connect(hostname=server_address,
- username='user',
- password='pass',
- port=22)
- return ssh
- def run_commands_remote(command, server_address):
- session = SSH(server_address).get_transport().open_session()
- session.set_combine_stderr(True)
- session.get_pty()
- session.exec_command(command)
- stdin = session.makefile('wb', -1)
- stdout = session.makefile('rb', -1)
- return (stdout.read().decode())
- #Функция греп лога
- def do_grep(log_file, grep_pattern, server_address ):
- remote_command = 'grep --line-buffered "%s" %s ' % (grep_pattern, log_file)
- print (remote_command)
- ssh = SSH(server_address)
- transport = ssh.get_transport()
- channel = transport.open_session()
- channel.exec_command(remote_command)
- while 1:
- try:
- rl, _, _ = select.select([channel], [], [], 0.0)
- if len(rl) > 0:
- r1=str(r1)
- buffer_string = channel.recv(256)
- File_log(str(log)+'.log', buffer_string)
- done = False
- while not done:
- more = channel.recv(256)
- if not more:
- done = True
- else:
- File_log(str(log)+'.log', more)
- except (KeyboardInterrupt, SystemExit):
- print ('got ctrl+c')
- break
- ssh.close()
- print ('client closed')
- #Удаляем пустые элементы в списке
- def clear(l):
- for e in l:
- if isinstance(e, list):
- clear(e)
- if isinstance(e, str) and len(e) == 0:
- l.remove(e)
- #Пишем в файл для создания списка
- def files(file, out):
- with open(file, 'w') as f:
- f.write(str(out))
- f.close()
- f = open(file, 'r')
- f.seek(0)
- l = f.readlines()
- f.close()
- l=[spisok.rstrip("n") for spisok in l]
- clear(l)
- return(l)
- #Создаем файл с отфильтрованным логом.
- def File_log(file_name, log):
- with open(file_name, 'a') as f:
- f.write(str(log))
- f.close()
- for i in lst:
- servers = run_commands_remote(com, server_address=i)
- ls = files('servers.txt', servers)
- for log in ls:
- out1 = 'ls -lohtr /home/servers/logs/'+str(log)
- output = run_commands_remote(out1, server_address=i)
- ls2 = files('log.txt', output)
- pattern = 'Mar 02'
- out2 = '/home/servers/logs/'+str(log)+'/'+str(ls2)
- do_grep(out2,pattern,i)
Add Comment
Please, Sign In to add comment