]> git.sesse.net Git - nms/blobdiff - clients/ciscong.pl
Eirik-fixes for ZyxelNG.
[nms] / clients / ciscong.pl
index 1a2c4576cde66c36d36eeb4e4e67c1fee344afc6..a2c08954eb00ec5806b9c1dc035801cf3dc6eeb4 100644 (file)
@@ -75,7 +75,7 @@ sub do_distro {
 #                      Prompt => '/[^\s\(]+(\([^\(]\)){0,1}[#>]/');
        if (!defined($ios)) {
                print "Could not connect to $dip";
-               return;
+               return 0;
        }
        $ios->login($nms::config::ios_user, $nms::config::ios_pass);
        $ios->enable;
@@ -94,7 +94,7 @@ sub do_distro {
 
        if (ios_getroute($ios, "192.168.1.0") == 1) {
                print "Already routed up 192.168.1.0/24\n" ;
-               return;
+               return 0;
        }
 
        my $zyxeloldip = "192.168.1.1";
@@ -111,7 +111,7 @@ sub do_distro {
                        print "Waiting for zyxel on $dip:$vlan timed out, wanted to set ip: $newip\n";
                        print LOG "Could not connect to $switchname\n";
                        stop_vlan($ios, $vlan);
-                       return;
+                       return 0;
                }
                last if $p->ping($zyxeloldip);
                print "pinging...\n";
@@ -130,6 +130,7 @@ sub do_distro {
 
        $ios->close();
 
+       return 1;
 }
 
 ## Collect switch ips
@@ -187,6 +188,11 @@ sub verify_run {
        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";
@@ -199,13 +205,14 @@ sub verify_run {
                while (1) {
                        if ($counter > 4) {
                                print "No answer from $dip:$vlan $ip, trying to route it up\n";
-                               do_distro($dip, $ip, $vlan, $switch);
-                               my $pid = fork();
-                               if ($pid == 0) {
-                                       sleep 100;
-                                       system("perl ./ciscong2.pl $switch");
-                                       exit 0;
+                               my $ret = do_distro($dip, $ip, $vlan, $switch);
+                               if ($ret == 0) {
+                                       # No answer from zyxel
+                                       last;
                                }
+                               print "Waiting for telnet to time out so we can do run ciscong.pl\n";
+                               sleep 100;
+                               system("perl ./ciscong2.pl $switch");
                                last;
                        }
                        last if $p->ping($ip);