projects
/
dell-switch
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
document solution
[dell-switch]
/
dell-switch.pl
diff --git
a/dell-switch.pl
b/dell-switch.pl
index
65cc0be
..
e3c3b0d
100755
(executable)
--- a/
dell-switch.pl
+++ b/
dell-switch.pl
@@
-17,11
+17,12
@@
require 'config.pl';
#$Net::OpenSSH::debug = ~0;
my $ip = shift @ARGV || die "usage: $0 IP command[ command ...]\n";
#$Net::OpenSSH::debug = ~0;
my $ip = shift @ARGV || die "usage: $0 IP command[ command ...]\n";
+$ip = $1 if `host $ip` =~ m/has address (\S+)/;
my @commands = @ARGV;
@commands = <DATA> unless @commands;
warn "\n## ssh $ip\n";
my @commands = @ARGV;
@commands = <DATA> unless @commands;
warn "\n## ssh $ip\n";
-my $ssh = Net::OpenSSH->new($ip, user => $login, passwd => $passwd);
+my $ssh = Net::OpenSSH->new($ip, user => $login, passwd => $passwd
, default_ssh_opts => [-o => "StrictHostKeyChecking=no"]
);
my ($pty ,$pid) = $ssh->open2pty();
if ( ! $pty ) {
warn "ERROR: can't connect to $ip, skipping";
my ($pty ,$pid) = $ssh->open2pty();
if ( ! $pty ) {
warn "ERROR: can't connect to $ip, skipping";
@@
-32,12
+33,12
@@
my $buff;
sub send_pty {
my $string = shift;
sub send_pty {
my $string = shift;
- sleep 0.
1
; # we really need to wait for slow PowerConnect 5324
+ sleep 0.
05
; # we really need to wait for slow PowerConnect 5324
foreach (split //, $string) {
print STDERR "[$_]" if $debug;
syswrite $pty, $_;
#$pty->flush;
foreach (split //, $string) {
print STDERR "[$_]" if $debug;
syswrite $pty, $_;
#$pty->flush;
- sleep 0.0
5
;
+ sleep 0.0
1
;
sysread $pty, my $echo, 1;
print STDERR $echo;
sysread $pty, my $echo, 1;
print STDERR $echo;
@@
-53,6
+54,7
@@
sub save_log {
my ($ip, $hostname, $command, $buff) = @_;
return unless $command;
my ($ip, $hostname, $command, $buff) = @_;
return unless $command;
+ return if $ENV{NO_LOG};
my $file = "${ip}_${hostname}_${command}.log";
open my $log, '>', $file;
my $file = "${ip}_${hostname}_${command}.log";
open my $log, '>', $file;
@@
-78,7
+80,7
@@
while() {
} elsif ( $buff =~ m/Password:/ ) {
send_pty "$passwd\n";
$buff = '';
} 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;
my $hostname = $1;
if ( $buff ) {
save_log $ip, $hostname, $command, $buff;
@@
-103,6
+105,11
@@
while() {
# nop
} elsif ( $buff =~ m/^[\r\n]+[\w\-]+>$/ ) {
send_pty "enable\n";
# 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';
}
}
}
}