10 use Net::Telnet::Cisco;
15 my $patchlist = "/root/patchlist.txt";
16 my $switches = "/root/switches.txt";
17 #my $patchlist = "/home/eirikn/patchlist.txt.eirik";
18 #my $switches = "/home/eirikn/switches.txt.eirik";
21 require "../include/config.pm";
23 require "../include/config.local.pm";
30 $t->cmd("show ip route".($net ? " $net" : '')) or return 0;;
35 #my $ios_server = "noc-gw.net.tg07.gathering.org";
38 #my $ios = nms::ios_connect($ios_server, $nms::config::ios_user, $nms::config::ios_pass)
39 # or die "Unable to connect to cisco";
43 my ($ios, $vlan) = @_;
46 $ios->cmd("int vlan $vlan");
47 $ios->cmd("ip add 192.168.1.254 255.255.255.0 secondary");
53 my ($ios, $vlan) = @_;
56 $ios->cmd("int vlan $vlan");
57 $ios->cmd("no ip add 192.168.1.254 255.255.255.0 secondary");
65 my ($dip, $newip, $vlan) = @_;
67 my $ios = Net::Telnet::Cisco->new(Host => $dip,
69 Prompt => '/[^\s\(]+(\([^\(]\)){0,1}[#>]/');
70 $ios->login($nms::config::ios_user, $nms::config::ios_pass);
73 #nms::ios_enable($ios);
75 #nms::ios_getroute($ios, "192.168.1.0");
78 #nms::ios_close($ios);
81 $ios->cmd("terminal length 0");
83 #my @routes = $ios->cmd("show ip route");
85 if (ios_getroute($ios, "192.168.1.0") == 1) {
86 print "Already routed up 192.168.1.0/24\n" ;
90 my $zyxeloldip = "192.168.1.1";
91 start_vlan($ios, $vlan);
96 my $p = Net::Ping->new();
97 printf "Waiting for zyxel to come up...\n";
100 if ($counter > 180) {
101 print "Waiting for zyxel on $dip:$vlan timed out, wanted to set ip: $newip";
102 stop_vlan($ios, $vlan);
105 last if $p->ping($zyxeloldip);
106 print "pinging...\n";
110 print "Zyxel is alive..\n";
113 system("perl ./zyxelng.pl 192.168.1.1 $newip");
117 stop_vlan($ios, $vlan);
124 ## Collect switch ips
128 open(SWITCHES, $switches) or die "Unable to open switches";
130 my ($ip, $net, $name) = split;
133 if ($name =~ /e\d+-\d/) {
134 die "We only support /26 nets for now you wanted $net" if ($net ne "26");
135 $switchips{$name} = $ip;
142 open(PATCHLIST, $patchlist) or die "Unable to open patchlist";
143 while (<PATCHLIST>) {
144 my ($switch, $distro, $port) = split;
146 $switch =~ /e(\d+)-(\d)/;
147 my ($row, $place) = ($1, $2);
148 my $ipnet = $switchips{$switch};
149 my $vlan = $row . $place;
150 print "Switch: $switch, Distro: $distro, vlan: $vlan\n";
151 print "Ip net: $ipnet\n";
152 my ($first, $second, $third, $fourth) = split(/\./, $ipnet);
153 my $ip = "$first.$second.$third.".(int($fourth)+2);
155 my $dip = $distro.".net.tg07.gathering.org";
157 do_distro($dip, $ip, $vlan);
158 # my ($dip, $newip, $vlan) = @_;