use Data::Dumper;
-my $patchlist = "/root/patchlist.txt";
-my $switches = "/root/switches.txt";
+#my $patchlist = "/root/patchlist.txt";
+#my $switches = "/root/switches.txt";
#my $patchlist = "/home/eirikn/patchlist.txt.eirik";
#my $switches = "/home/eirikn/switches.txt.eirik";
+my $patchlist = "/root/patchlist.txt.d01-1-2";
+my $switches = "/root/switches.txt.d01-1-2";
+
BEGIN {
require "../include/config.pm";
sub do_distro {
- my ($dip, $newip, $vlan) = @_;
+ my ($dip, $newip, $vlan, $switchname) = @_;
my $ios = Net::Telnet::Cisco->new(Host => $dip,
Errmode => 'return',
print "Zyxel is alive..\n";
$p->close();
- system("perl ./zyxelng.pl 192.168.1.1 $newip");
+ system("perl ./zyxelng.pl 192.168.1.1 $newip $switchname");
####
while(<SWITCHES>) {
my ($ip, $net, $name) = split;
- print $name."\n";
if ($name =~ /e\d+-\d/) {
die "We only support /26 nets for now you wanted $net" if ($net ne "26");
$switchips{$name} = $ip;
}
close(SWITCHES);
+sub switch_info {
+ my ($switch, $distro, $port) = @_;
+
+ $switch =~ /e(\d+)-(\d)/;
+ my ($row, $place) = ($1, $2);
+ my $ipnet = $switchips{$switch};
+ my $vlan = $row . $place;
+ my ($first, $second, $third, $fourth) = split(/\./, $ipnet);
+ my $ip = "$first.$second.$third.".(int($fourth)+2);
+ my $dip = $distro.".net.tg07.gathering.org";
+
+ return ($row, $place, $ipnet, $vlan, $ip, $dip);
+}
+
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 "First run...\n";
+ my ($row, $place, $ipnet, $vlan, $ip, $dip) = switch_info($switch, $distro, $port);
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);
+ do_distro($dip, $ip, $vlan, $switch);
+# my ($dip, $newip, $vlan) = @_;
+ }
+ close(PATCHLIST);
+}
+
+sub verify_run {
+ open(PATCHLIST, $patchlist) or die "Unable to open patchlist";
+ while (<PATCHLIST>) {
+ print "Verify run....\n";
+ my ($switch, $distro, $port) = split;
+
+ if ($switch eq "e71-6") {
+ print "There is no e71-6\n";
+ next;
+ }
+
+ my ($row, $place, $ipnet, $vlan, $ip, $dip) = switch_info($switch, $distro, $port);
+ print "Switch: $switch, Distro: $distro, vlan: $vlan\n";
+ print "Ip net: $ipnet\n";
+ print "Ip: $ip\n";
+
+ my $p = Net::Ping->new();
+ printf "Checking if zyxel is up $dip:$vlan $ip...\n";
+ my $counter = 0;
+ while (1) {
+ if ($counter > 10) {
+ print "No answer from $dip:$vlan $ip, trying to route it up\n";
+ do_distro($dip, $ip, $vlan, $switch);
+ last;
+ }
+ last if $p->ping($ip);
+ print "pinging...\n";
+ sleep 1;
+ $counter++;
+ }
+
# my ($dip, $newip, $vlan) = @_;
}
close(PATCHLIST);
if ($#ARGV > -1) {
first_run();
}
+else {
+ verify_run();
+}