Guest User

Untitled

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