X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=dell-switch.pl;h=efff4ba71000d9322e275cf03609461aec259fda;hb=c2126556f5bf3653323e9aa8874c2732733df2c8;hp=6b4f61c277c0986dfac3020d33a52f4106f42bc5;hpb=7e50b8c4b193ffa02a31a0563e7f8b0265075eee;p=dell-switch diff --git a/dell-switch.pl b/dell-switch.pl index 6b4f61c..efff4ba 100755 --- a/dell-switch.pl +++ b/dell-switch.pl @@ -11,6 +11,7 @@ our $login; our $passwd; our $debug = $ENV{DEBUG} || 0; +use lib '.'; require 'config.pl'; #$Net::OpenSSH::debug = ~0; @@ -52,6 +53,7 @@ sub save_log { my ($ip, $hostname, $command, $buff) = @_; return unless $command; + return if $ENV{NO_LOG}; my $file = "${ip}_${hostname}_${command}.log"; open my $log, '>', $file; @@ -64,8 +66,9 @@ sub save_log { } my $command; +my @commands_while = ( @commands ); -while(1) { +while() { my $data; my $read = sysread($pty, $data, 1); print STDERR $data; @@ -76,13 +79,13 @@ while(1) { } elsif ( $buff =~ m/Password:/ ) { send_pty "$passwd\n"; $buff = ''; - } elsif ( $buff =~ m/([\w\-]+)#$/ ) { + } elsif ( $buff =~ m/([\w\-\(\)]+)#$/ ) { my $hostname = $1; if ( $buff ) { save_log $ip, $hostname, $command, $buff; $buff = ''; } - if ( $command = shift @commands ) { + if ( $command = shift @commands_while ) { $command =~ s/[\n\r]+$//; send_pty "$command\n"; $buff = ''; @@ -101,11 +104,19 @@ while(1) { # nop } elsif ( $buff =~ m/^[\r\n]+[\w\-]+>$/ ) { send_pty "enable\n"; + } elsif ( $buff =~ m{\QOverwrite file [startup-config] ?[Yes/press any key for no]....\E} ) { + send_pty "y"; + $buff = ''; + } elsif ( $buff =~ s{Management access will be blocked for the duration of the transfer.*Are you sure you want to start\? \(y/n\) }{}s ) { + send_pty 'y'; } } __DATA__ +show system show arp show vlan show running-config show bridge address +show interfaces status +