-
Notifications
You must be signed in to change notification settings - Fork 0
/
updatesVerify.py
83 lines (62 loc) · 1.82 KB
/
updatesVerify.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Verifica se as atualizações
agendadas previamente concluiram
com sucesso ou falha
Paulo Ferraz - matricula
Uso:
python ./updatesVerify.py arquivo_hosts
onde arquivo_hosts contem um servidor por
linha a ser verificado.
Histórico:
v1.0 - Fri Jun 16 10:10:18 -03 2023
COPYRIGHT: Este programa é GPL.
"""
import xmlrpclib, sys
from authenticate import authenticate
# TODO
# Tratar exceção qdo host não existe:
# IndexError: list index out of range
if len(sys.argv) < 2:
print("ERRO: Faltou arquivo de hosts!")
sys.exit()
hostsfile = str(sys.argv[1])
def verifyUpdates(hostsfile):
"""
Verifica se as atualizações
agendadas previamente concluiram
com sucesso ou falha
"""
# Variáveis
hosts = []
events = []
# Autenticação
login = authenticate()
client = login["cliente"]
session = login["sessao"]
# Array de hosts
with open("./" + str(hostsfile), "r") as f:
for line in f.readlines():
cleanline = line.strip("\n")
hosts.append(cleanline.lower())
# Retorno de falha das atualizações por host,
# senão não retorna nada.
for server in hosts:
hostId = client.system.getId(session, server)[0]["id"]
events = client.system.listSystemEvents(session, hostId, "Package Install")
if len(events) > 0:
stat = events[-1]["failed_count"]
if stat == 1:
print(server + ":")
print(events[-1]["result_msg"])
print("")
# Encerra sessão
client.auth.logout(session)
# Em caso de erro, retorna host
# com sua respectiva exceção.
# Em caso de successo, não retroana nada
return hosts
if __name__ == "__main__":
verifyUpdates(hostsfile)