]> git.llucax.com Git - z.facultad/75.43/tp2.git/blob - makeroute
Se completan rutas y se agrega script.
[z.facultad/75.43/tp2.git] / makeroute
1 #!/usr/bin/env python
2 # vim: set et sw=4 sts=4 :
3
4 def get_campos(line):
5     r = []
6     for c in line.split('\t'):
7         r.append(c.strip('"\n'))
8     return r
9
10 def parse(f):
11     hosts = {}
12     line = f.readline()
13     while line:
14         if line.startswith('"tabla de ruteo de '):
15             host = line[19:-7]
16             hosts[host] = {}
17             line = f.readline()
18             hosts[host]['ifaces'] = []
19             while line and line.strip() <> '"red"\t"ip"\t"mascara"\t"gateway"\t"interfaz"\t"metrica"':
20                 if line.startswith('"'):
21                     (iface, ip, mascara, broadcast) = get_campos(line)[:4]
22                     hosts[host]['ifaces'].append({
23                         'iface': iface,
24                         'ip': ip,
25                         'mascara': mascara,
26                         'broadcast': broadcast,
27                     })
28                 line = f.readline()
29             line = f.readline()
30             hosts[host]['rutas'] = []
31             while line and line.strip() <> '"--"':
32                 if line.startswith('"'):
33                     (red, ip, mascara, gateway, iface, metrica) = get_campos(line)
34                     if not metrica: metrica = "1"
35                     hosts[host]['rutas'].append({
36                         'red': red,
37                         'ip': ip,
38                         'mascara': mascara,
39                         'gateway': gateway,
40                         'iface': iface,
41                         'metrica': metrica,
42                         })
43                 line = f.readline()
44         line = f.readline()
45     return hosts
46
47 def main(host):
48     import sys, pprint
49     #pprint.pprint(parse(sys.stdin))
50     #sys.exit(1)
51     hosts = parse(sys.stdin)
52     for iface in hosts[host]['ifaces']:
53         if not iface['iface'].startswith('ppp'):
54             print 'ifconfig %(iface)s %(ip)s broadcast %(broadcast)s netmask %(mascara)s' % iface
55     for ruta in hosts[host]['rutas']:
56         if ruta['metrica'] <> "0":
57             print 'route add -net %(ip)s gw %(gateway)s netmask %(mascara)s dev %(iface)s metric %(metrica)s' % ruta
58
59 if __name__ == '__main__':
60     import sys
61     main(sys.argv[1])
62