-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
53 lines (43 loc) · 1.45 KB
/
main.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
import pickle
import sys
from ipwhois import IPWhois
from ipwhois.exceptions import HTTPLookupError, IPDefinedError
import pycountry
from ip import lookup_ips
from data import g, file_to_analyze
from location import tally_countries, plot_location
def iterate_input(input_file, work_todo, starting_no=0):
with open(input_file, 'r') as input_t:
ips = input_t.read()
ips_individual = ips.split('\n')[0:-1]
ip_count = len(ips_individual)
for i, ip in enumerate(ips_individual):
print('Working on %d out of %d: %s' % (i, ip_count, ip))
if i >= starting_no:
work_todo(ip)
if __name__ == "__main__":
g.load_data()
try:
if sys.argv[1] == 'lookup':
iterate_input(file_to_analyze, lookup_ips)
g.save_data()
if sys.argv[1] == 'tally':
iterate_input(file_to_analyze, tally_countries)
g.save_data()
print(g.country_dict)
print(g.postal_code)
print(g.states)
if sys.argv[1] == 'plot':
if len(sys.argv) == 3:
if sys.argv[2] == 'zip':
plot_location(map_type='zip')
print(g.postal_code)
else:
plot_location(map_type='state')
print(g.states)
else:
print(len(g.bad_ips), g.bad_ips)
print(g.ip_objs.keys())
except BaseException as e:
g.save_data()
print(e.output)