forked from adrianneg/infoset
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtoolbox.py
executable file
·147 lines (113 loc) · 3.28 KB
/
toolbox.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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#!/usr/bin/env python
import yaml
from infoset.interfaces import Cli
from infoset.utils import ConfigReader
from infoset.utils import jm_general
from infoset.utils import log
from infoset.snmp import poll
from infoset.snmp import snmp_manager
from infoset.snmp import snmp_info
from infoset.web import ws_device
# import sys
# from pprint import pprint
def main():
"""Main Function.
Args:
None
Returns:
None
"""
# Initialize key variables
additional_help = """\
Utility script for the project.
"""
# Process the CLI
cli_object = Cli(additional_help=additional_help)
cli_args = cli_object.args()
# Process the config
config = ConfigReader(cli_args.directory)
# Show configuration data
if cli_args.mode == 'config':
do_config(cli_args, config)
# Show interesting information
if cli_args.mode == 'test':
do_test(cli_args, config)
# Process hosts
if cli_args.mode == 'poll':
do_poll(config, cli_args.verbose)
# Create pages
if cli_args.mode == 'pagemaker':
do_pages(config, cli_args.verbose)
if cli_args.mode == 'monitor':
do_monitor(config, cli_args.verbose)
def do_config(cli_args, config):
"""Process 'config' CLI option.
Args:
connectivity_check: Set if testing for connectivity
Returns:
None
"""
# Show hosts if required
if cli_args.hosts is True:
print('hosts:')
print(yaml.dump(config.hosts(), default_flow_style=False))
# Show hosts if required
if cli_args.snmp_auth is True:
print('snmp_auth:')
print(yaml.dump(config.snmp_auth(), default_flow_style=False))
def do_test(cli_args, config):
"""Process 'test' CLI option.
Args:
connectivity_check: Set if testing for connectivity
Returns:
None
"""
# Show host information
validate = snmp_manager.Validate(cli_args.host, config.snmp_auth())
snmp_params = validate.credentials()
snmp_object = snmp_manager.Interact(snmp_params)
if bool(snmp_params) is True:
print('\nValid credentials found:\n')
print(yaml.dump(snmp_params, default_flow_style=False))
print('\n')
# Get SNMP data and print
status = snmp_info.Query(snmp_object)
yaml_data = status.everything()
print(yaml_data)
else:
# Error, host problems
log_message = (
'Uncontactable host %s or no valid SNMP '
'credentials found for it.') % (cli_args.host)
log.log2die(1039, log_message)
# TODO remove deprecated pagemaker functions
def do_pages(config, verbose=False):
"""Process 'pagemaker' CLI option.
Args:
config: Configuration object
verbose: Verbose output if True
Returns:
None
"""
# Poll
ws_device.make(config, verbose)
def do_poll(config, verbose=False):
"""Process 'run' CLI option.
Args:
config: Configuration object
verbose: Verbose output if True
Returns:
None
"""
# Poll
poll.snmp(config, verbose)
def do_monitor(config, verbose=False):
"""Process 'run' CLI option.
Args:
config: Configuration object
verbose: Verbose output if True
Returns:
None
"""
if __name__ == "__main__":
main()