1
1
#!/usr/bin/env python3
2
2
3
3
import logging
4
+ import sys
4
5
5
6
from configparser import ConfigParser
6
7
from argparse import ArgumentParser
10
11
from urllib3 .exceptions import InsecureRequestWarning
11
12
12
13
from nbs import NetBoxScanner
13
- from nbs .nmap import Nmap
14
- from nbs .netxms import NetXMS
15
- from nbs .prime import Prime
14
+
15
+ argument = str (sys .argv [1 ])
16
+
17
+ if argument == 'nmap' :
18
+ from nbs .nmap import Nmap
19
+ if argument == 'netxms' :
20
+ from nbs .netxms import NetXMS
21
+ if argument == 'prime' :
22
+ from nbs .prime import Prime
16
23
17
24
18
25
local_config = expanduser ('~/.netbox-scanner.conf' )
27
34
raise FileNotFoundError ('Configuration file was not found.' )
28
35
29
36
netbox = config ['NETBOX' ]
30
- nmap = config ['NMAP' ]
31
- netxms = config ['NETXMS' ]
32
- prime = config ['PRIME' ]
37
+ if argument == 'nmap' :
38
+ nmap = config ['NMAP' ]
39
+ if argument == 'netxms' :
40
+ netxms = config ['NETXMS' ]
41
+ if argument == 'prime' :
42
+ prime = config ['PRIME' ]
33
43
34
44
parser = ArgumentParser (description = 'netbox-scanner' )
35
45
subparsers = parser .add_subparsers (title = 'Commands' , dest = 'command' )
36
46
subparsers .required = True
37
- argsp = subparsers .add_parser ('nmap' , help = 'Nmap module' )
38
- argsp = subparsers .add_parser ('netxms' , help = 'NetXMS module' )
39
- argsp = subparsers .add_parser ('prime' , help = 'Cisco Prime module' )
47
+ if argument == 'nmap' :
48
+ argsp = subparsers .add_parser ('nmap' , help = 'Nmap module' )
49
+ if argument == 'netxms' :
50
+ argsp = subparsers .add_parser ('netxms' , help = 'NetXMS module' )
51
+ if argument == 'prime' :
52
+ argsp = subparsers .add_parser ('prime' , help = 'Cisco Prime module' )
40
53
args = parser .parse_args ()
41
54
42
55
logfile = '{}/netbox-scanner-{}.log' .format (
43
56
netbox ['logs' ],
44
57
datetime .now ().isoformat ()
45
58
)
46
59
logging .basicConfig (
47
- filename = logfile ,
48
- level = logging .INFO ,
60
+ filename = logfile ,
61
+ level = logging .INFO ,
49
62
format = '%(asctime)s\t netbox-scanner\t %(levelname)s\t %(message)s'
50
63
)
51
64
logging .getLogger ().addHandler (logging .StreamHandler ())
52
65
66
+ # useful if you have tls_verify set to no
53
67
disable_warnings (InsecureRequestWarning )
54
68
55
69
@@ -58,6 +72,7 @@ def cmd_nmap(s): # nmap handler
58
72
h .run ()
59
73
s .sync (h .hosts )
60
74
75
+
61
76
def cmd_netxms (s ): # netxms handler
62
77
h = NetXMS (
63
78
netxms ['address' ],
@@ -69,12 +84,13 @@ def cmd_netxms(s): # netxms handler
69
84
h .run ()
70
85
s .sync (h .hosts )
71
86
87
+
72
88
def cmd_prime (s ): # prime handler
73
89
h = Prime (
74
90
prime ['address' ],
75
91
prime ['username' ],
76
92
prime ['password' ],
77
- prime .getboolean ('tls_verify' ),
93
+ prime .getboolean ('tls_verify' ),
78
94
prime ['unknown' ]
79
95
)
80
96
h .run () # set access_point=True to process APs
@@ -85,8 +101,8 @@ def cmd_prime(s): # prime handler
85
101
scanner = NetBoxScanner (
86
102
netbox ['address' ],
87
103
netbox ['token' ],
88
- netbox . getboolean ( 'tls_verify' ),
89
- nmap ['tag' ],
104
+ netbox [ 'tls_verify' ],
105
+ nmap ['tag' ],
90
106
nmap .getboolean ('cleanup' )
91
107
)
92
108
0 commit comments