-
Notifications
You must be signed in to change notification settings - Fork 1
/
rewrite_gmon.py
74 lines (59 loc) · 1.95 KB
/
rewrite_gmon.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
#!/bin/python3
#filename: rewrite_gonf.py
#description: rewrite the file on the clients holding /etc/ganglia/gmond.conf
#
import os.path
import re
#ganglia_conf=open('/etc/ganglia/gmond.conf','r')
ganglia_conf=open('./gmond.conf','r')
def search_for_opening(line):
regex=re.compile('{') #looking for beginning stanza
if regex.search(line):
return 1
else:
return 0
def search_for_close(line):
regex=re.compile('}') #closing of stanza
if regex.search(line):
return 1
else:
return 0
def ignore_comments(line):
regex=re.compile('^#') #closing of stanza
if regex.search(line):
return 1
else:
return 0
def search_keyword(line,keyword):
#verify no comment in line
comment_exist=ignore_comments(line)
regex=re.compile(keyword) #beginning of config stanza detectet
if regex.search(line) and comment_exist==0:
print ("match...")
return 1
else:
return 0
words=['cluster {', 'udp_recv_channel {', 'udp_send_channel {']
match_area=0
match_word="none"
for line in ganglia_conf:
#see if we are at a start of stanza
for word in words:
keyword=search_keyword(line,word)
if keyword == 1:
match_area=1 #our search has a match
match_word=line #set match world for tracking current stanza
break
b1=search_for_opening(line)
e1=search_for_close(line)
if e1 == 1: #close match area when '{' detected
match_word="none"
match_area=0
mcast_join_search=search_keyword(line,"mcast_join")
bind_ip_search=search_keyword(line,"bind = ")
if match_area ==1 and mcast_join_search == 1:
print(b1,e1,keyword,match_word,match_area,"") #omit line
elif match_area ==1 and match_word == "udp_recv_channel {" and bind_ip_search == 1:
print(b1,e1,keyword,match_area,match_word,".*bind = {host_ip}")
else:
print(b1,e1,keyword,match_area,match_word,line.rstrip())