Guest User

Untitled

a guest
Mar 5th, 2018
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.69 KB | None | 0 0
  1. import paramiko
  2. import select
  3. import re
  4.  
  5.  
  6. lst=['192.168.0.1','192.168.0.2','192.168.0.3']
  7. com = 'ls /home/servers/logs/ | grep Application'
  8.  
  9.  
  10. def run_commands_remote(command, server_address):
  11. ssh = paramiko.SSHClient()
  12. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  13. ssh.connect(hostname=server_address,
  14. username='user',
  15. password='pass',
  16. port=22)
  17. session = ssh.get_transport().open_session()
  18. session.set_combine_stderr(True)
  19. session.get_pty()
  20. session.exec_command(command)
  21. stdin = session.makefile('wb', -1)
  22. stdout = session.makefile('rb', -1)
  23. return (stdout.read().decode())
  24.  
  25. #Функция греп лога
  26. def do_grep(log_file, grep_pattern, server_address ):
  27. client = paramiko.SSHClient()
  28. client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  29. client.connect(hostname=server_address,
  30. username='user',
  31. password='pass',
  32. port=22)
  33. remote_command = 'grep --line-buffered "%s" %s ' % (grep_pattern, log_file)
  34. print (remote_command)
  35.  
  36. transport = client.get_transport()
  37. channel = transport.open_session()
  38. channel.exec_command(remote_command)
  39.  
  40. while 1:
  41. rl, _, _ = select.select([channel], [], [], 0.0)
  42. if len(rl) > 0:
  43. r1=str(r1)
  44. buffer_string = channel.recv(256)
  45. File_log(str(log)+'.log', buffer_string)
  46. done = False
  47. while not done:
  48. more = channel.recv(256)
  49. if not more:
  50. done = True
  51. else:
  52. File_log(str(log)+'.log', more)
  53.  
  54. client.close()
  55. print ('client closed')
  56.  
  57. #Удаляем пустые элементы в списке
  58. def clear(l):
  59. for e in l:
  60. if isinstance(e, list):
  61. clear(e)
  62. if isinstance(e, str) and len(e) == 0:
  63. l.remove(e)
  64.  
  65. #Пишем в файл для создания списка
  66. def files(file, out):
  67. with open(file, 'w') as f:
  68. f.write(str(out))
  69. f.close()
  70. f = open(file, 'r')
  71. f.seek(0)
  72. l = f.readlines()
  73. f.close()
  74. l=[spisok.rstrip("n") for spisok in l]
  75. clear(l)
  76. return(l)
  77.  
  78. #Создаем файл с отфильтрованным логом.
  79. def File_log(file_name, log):
  80. with open(file_name, 'a') as f:
  81. f.write(str(log))
  82. f.close()
  83.  
  84. for i in lst:
  85. servers = run_commands_remote(com, server_address=i)
  86. ls = files('servers.txt', servers)
  87. for log in ls:
  88. out1 = 'ls -lohtr /home/servers/logs/'+str(log)
  89. output = run_commands_remote(out1, server_address=i)
  90. ls2 = files('log.txt', output)
  91. pattern = 'Mar 02'
  92. out2 = '/home/servers/logs/'+str(log)+'/'+str(ls2)
  93. do_grep(out2,pattern,i)
Add Comment
Please, Sign In to add comment