use Data::Dumper;
-#my $patchlist = "/home/eirikn/patchlist.txt";
-#my $switches = "/home/eirikn/switches.txt";
-my $patchlist = "/home/eirikn/patchlist.txt.eirik";
-my $switches = "/home/eirikn/switches.txt.eirik";
+my $patchlist = "/root/patchlist.txt";
+my $switches = "/root/switches.txt";
+#my $patchlist = "/home/eirikn/patchlist.txt.eirik";
+#my $switches = "/home/eirikn/switches.txt.eirik";
BEGIN {
require "../include/config.pm";
# or die "Unable to connect to cisco";
+sub start_vlan {
+ my ($ios, $vlan) = @_;
+
+ $ios->cmd("conf t");
+ $ios->cmd("int vlan $vlan");
+ $ios->cmd("ip add 192.168.1.254 255.255.255.0 secondary");
+ $ios->cmd("exit");
+ $ios->cmd("exit");
+}
+
+sub stop_vlan {
+ my ($ios, $vlan) = @_;
+
+ $ios->cmd("conf t");
+ $ios->cmd("int vlan $vlan");
+ $ios->cmd("no ip add 192.168.1.254 255.255.255.0 secondary");
+ $ios->cmd("exit");
+ $ios->cmd("exit");
+}
+
+
sub do_distro {
my ($dip, $newip, $vlan) = @_;
return;
}
- $ios->cmd("conf t");
- $ios->cmd("int vlan $vlan");
- $ios->cmd("ip add 192.168.1.254 255.255.255.0 secondary");
- $ios->cmd("exit");
- $ios->cmd("exit");
-
my $zyxeloldip = "192.168.1.1";
+ start_vlan($ios, $vlan);
### Do things
## ZyxelNG connect
my $p = Net::Ping->new();
printf "Waiting for zyxel to come up...\n";
+ my $counter = 0;
while (1) {
+ if ($counter > 180) {
+ print "Waiting for zyxel on $dip:$vlan timed out, wanted to set ip: $newip";
+ stop_vlan($ios, $vlan);
+ return;
+ }
last if $p->ping($zyxeloldip);
print "pinging...\n";
sleep 1;
+ $counter++;
}
print "Zyxel is alive..\n";
$p->close();
####
- $ios->cmd("conf t");
- $ios->cmd("int vlan $vlan");
- $ios->cmd("no ip add 192.168.1.254 255.255.255.0 secondary");
- $ios->cmd("exit");
- $ios->cmd("exit");
+ stop_vlan($ios, $vlan);
$ios->close();
}
-
## Collect switch ips
my %switchips;
}
close(SWITCHES);
-
-open(PATCHLIST, $patchlist) or die "Unable to open patchlist";
-while (<PATCHLIST>) {
- my ($switch, $distro, $port) = split;
-
- $switch =~ /e(\d+)-(\d)/;
- my ($row, $place) = ($1, $2);
- my $ipnet = $switchips{$switch};
- my $vlan = $row . $place;
- print "Switch: $switch, Distro: $distro, vlan: $vlan\n";
- print "Ip net: $ipnet\n";
- my ($first, $second, $third, $fourth) = split(/\./, $ipnet);
- my $ip = "$first.$second.$third.".(int($fourth)+2);
- print "Ip: $ip\n";
- my $dip = $distro.".net.tg07.gathering.org";
-
- do_distro($dip, $ip, $vlan);
+sub first_run {
+
+ open(PATCHLIST, $patchlist) or die "Unable to open patchlist";
+ while (<PATCHLIST>) {
+ my ($switch, $distro, $port) = split;
+
+ $switch =~ /e(\d+)-(\d)/;
+ my ($row, $place) = ($1, $2);
+ my $ipnet = $switchips{$switch};
+ my $vlan = $row . $place;
+ print "Switch: $switch, Distro: $distro, vlan: $vlan\n";
+ print "Ip net: $ipnet\n";
+ my ($first, $second, $third, $fourth) = split(/\./, $ipnet);
+ my $ip = "$first.$second.$third.".(int($fourth)+2);
+ print "Ip: $ip\n";
+ my $dip = $distro.".net.tg07.gathering.org";
+
+ do_distro($dip, $ip, $vlan);
# my ($dip, $newip, $vlan) = @_;
+ }
+ close(PATCHLIST);
}
-close(PATCHLIST);
+if ($#ARGV > -1) {
+ first_run();
+}