--- /dev/null
+#!/usr/bin/perl
+#
+#
+
+use warnings;
+use strict;
+
+use lib '../include';
+
+use Net::Telnet::Cisco;
+use Net::Ping;
+
+use Data::Dumper;
+
+
+BEGIN {
+ require "../include/config.pm";
+ eval {
+ require "../include/config.local.pm";
+ };
+}
+
+sub ios_getroute {
+ my ($t, $net) = @_;
+
+ $t->cmd("show ip route".($net ? " $net" : '')) or return 0;;
+
+ return 1;
+}
+
+my $ios_server = "noc-gw.net.tg07.gathering.org";
+my $vlannumber = 16;
+
+#my $ios = nms::ios_connect($ios_server, $nms::config::ios_user, $nms::config::ios_pass)
+# or die "Unable to connect to cisco";
+
+my $ios = Net::Telnet::Cisco->new(Host => $ios_server,
+ Errmode => 'return',
+ Prompt => '/[^\s\(]+(\([^\(]\)){0,1}[#>]/');
+$ios->login($nms::config::ios_user, $nms::config::ios_pass);
+$ios->enable;
+
+#nms::ios_enable($ios);
+#$ios->cmd();
+#nms::ios_getroute($ios, "192.168.1.0");
+#$ios->cmd("");
+
+#nms::ios_close($ios);
+
+# Disable paging
+$ios->cmd("terminal length 0");
+
+#my @routes = $ios->cmd("show ip route");
+
+die "Already routed up 192.168.1.0/24" if (ios_getroute($ios, "192.168.1.0") == 1);
+
+
+
+$ios->cmd("conf t");
+$ios->cmd("int vlan $vlannumber");
+$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";
+
+### Do things
+## ZyxelNG connect
+
+
+my $p = Net::Ping->new();
+printf "Waiting for zyxel to come up...\n";
+while (1) {
+ last if $p->ping($zyxeloldip);
+ print "pinging...\n";
+ sleep 1;
+}
+print "Zyxel is alive..\n";
+$p->close();
+
+system("perl ./zyxelng.pl 192.168.1.1 192.168.2.1");
+
+####
+
+$ios->cmd("conf t");
+$ios->cmd("int vlan $vlannumber");
+$ios->cmd("no ip add 192.168.1.254 255.255.255.0 secondary");
+$ios->cmd("exit");
+$ios->cmd("exit");
+
+$ios->close();
+
+
--- /dev/null
+#!/usr/bin/perl -w
+#
+#
+
+use strict;
+use lib '../include';
+
+use Data::Dumper;
+
+use nms qw(switch_connect switch_exec);
+#use ios;
+
+#my $t = nms::ios_connect('62.148.36.12', 'c', 'c', 'c');
+
+#print STDERR "No such network 192.168.1.0\n" if nms::ios_getroute($t, "192.168.1.0") == 0;
+
+#nms::ios_close($t);
+
+my $oldip;
+my $newip;
+if ($#ARGV < 1) {
+ die "Foo $#ARGV";
+}
+
+$oldip = $ARGV[0];
+$newip = $ARGV[1];
+
+my $one = 0;
+
+my $switchip;
+#$switchip = "87.76.250.226" if $one;
+#$switchip = "192.168.2.150" if $one;
+#$switchip = "192.168.1.1" unless $one;
+$switchip = $oldip;
+my $switch = switch_connect($switchip);
+
+my $cmds1 = <<EOF
+sys hostname es-3024
+ip igmpsnoop enable
+
+sys sw vlan type 802.1q
+sys sw vlan1q svlan setentry MNGT 248 25 fixed tag
+sys sw vlan1q svlan active 248
+sys sw vlan1q svlan setentry e01-1sw 1 25 fixed untag
+
+sys sw vlan1q svlan setentry MNGT 248 1 forbidden tag
+sys sw vlan1q svlan setentry MNGT 248 2 forbidden tag
+sys sw vlan1q svlan setentry MNGT 248 3 forbidden tag
+sys sw vlan1q svlan setentry MNGT 248 4 forbidden tag
+sys sw vlan1q svlan setentry MNGT 248 5 forbidden tag
+sys sw vlan1q svlan setentry MNGT 248 6 forbidden tag
+sys sw vlan1q svlan setentry MNGT 248 7 forbidden tag
+sys sw vlan1q svlan setentry MNGT 248 8 forbidden tag
+sys sw vlan1q svlan setentry MNGT 248 9 forbidden tag
+sys sw vlan1q svlan setentry MNGT 248 10 forbidden tag
+sys sw vlan1q svlan setentry MNGT 248 11 forbidden tag
+sys sw vlan1q svlan setentry MNGT 248 12 forbidden tag
+sys sw vlan1q svlan setentry MNGT 248 13 forbidden tag
+sys sw vlan1q svlan setentry MNGT 248 14 forbidden tag
+sys sw vlan1q svlan setentry MNGT 248 15 forbidden tag
+sys sw vlan1q svlan setentry MNGT 248 16 forbidden tag
+sys sw vlan1q svlan setentry MNGT 248 17 forbidden tag
+sys sw vlan1q svlan setentry MNGT 248 18 forbidden tag
+sys sw vlan1q svlan setentry MNGT 248 19 forbidden tag
+sys sw vlan1q svlan setentry MNGT 248 20 forbidden tag
+sys sw vlan1q svlan setentry MNGT 248 21 forbidden tag
+sys sw vlan1q svlan setentry MNGT 248 22 forbidden tag
+sys sw vlan1q svlan setentry MNGT 248 23 forbidden tag
+sys sw vlan1q svlan setentry MNGT 248 24 forbidden tag
+EOF
+;
+#
+foreach (split(/\n+/, $cmds1)) {
+ print "Sending: '$_'\n";
+ switch_exec($_, $switch);
+}
+
+my $cmd;
+#$cmd = "ip ifconfig swif0 192.168.1.1/24" if $one;
+#$cmd = "ip ifconfig swif0 192.168.2.150/24" unless $one;
+$cmd = "ip ifconfig swif0 $newip/24";
+
+print "Sending '$cmd'\n";
+my $pid = fork();
+if ($pid == 0) {
+ print "Sending ifconfig.. $cmd\n";
+ switch_exec($cmd, $switch);
+ exit 0;
+} else {
+ #switch_exec($cmd, $switch, 1);
+ print "Sleeping...\n";
+ sleep 1;
+}
+$switch->close();
+
+#print "Reconnecting... ";
+##$switchip = "192.168.1.1" if $one;
+##$switchip = "192.168.2.150" unless $one;
+#$switchip = $newip;
+#autoflush STDOUT 1;
+#print "Connecting to: $switchip...\n";
+#my $i = 1;
+#while(1) {
+# $switch = switch_connect($switchip);
+#
+# #print (defined($switch)? $switch : "foo") ." <---- switch\n";
+# if (defined($switch) || $switch) {
+# last;
+# }
+# printf("Waited $i seconds...\r");
+# $i++;
+# sleep 1;
+#}
+#print "\n";
+
+#print $switch."\n";
+#$cmd = "sys sw vlan1q svlan cpu 248";
+#print "Sending '$cmd'\n";
+#print "XXX: No we did not...";
+#print Dumper($switch->cmd("ip ifconfig"));
+#print Dumper($switch->cmd("ip route status"));
+#switch_exec($cmd, $switch, 1);
+
use Net::Telnet;
package nms;
+
+use base 'Exporter';
+our @EXPORT = qw(switch_connect switch_exec);
+
BEGIN {
require "config.pm";
eval {
sub switch_connect($) {
my ($ip) = @_;
-# Dump_Log => '/tmp/dumplog-queue',
my $conn = new Net::Telnet( Timeout => $nms::config::telnet_timeout,
+# Dump_Log => '/tmp/dumplog-queue',
Errmode => 'return',
- Prompt => '/(es3024|e\d+\-\dsw)>/i');
+# Prompt => '/ES-3023>/');
+ Prompt => '/(ES-3024|e\d{1,2}\-\dsw)>/i');
my $ret = $conn->open( Host => $ip);
if (!$ret || $ret != 1) {
return (undef);
}
# Send a command to switch and return the data recvied from the switch
-sub switch_exec($$) {
- my ($cmd, $conn) = @_;
+sub switch_exec {
+ my ($cmd, $conn, $print) = @_;
# Send the command and get data from switch
- my @data = $conn->cmd($cmd);
+ my @data;
+ if (defined($print)) {
+ $conn->print($cmd);
+ return;
+ } else {
+ @data = $conn->cmd($cmd);
+ }
my @lines = ();
foreach my $line (@data) {
# Remove escape-7 sequence