pai
9b80112201
commit
e2febe9725
@ -0,0 +1,22 @@ |
||||
#!/bin/sh |
||||
|
||||
HOSTS=" |
||||
r1 r2 r3 |
||||
switch1 switch2 switch3 |
||||
" |
||||
|
||||
for HOST in $HOSTS ; do |
||||
rm -f ./fetchedconfig |
||||
./getconfig.ex $HOST 2> /dev/null > /dev/null |
||||
if [ -e ./fetchedconfig ]; then |
||||
#DATE=`date -u --rfc-3339=seconds` |
||||
#echo "! fetched from $HOST on $DATE" > ${HOST}-config.txt |
||||
cat ./fetchedconfig > ${HOST}-config.txt |
||||
rm -f ./fetchedconfig |
||||
./wikiupdate ${HOST} ./${HOST}-config.txt |
||||
rm -f ./${HOST}-config.txt |
||||
else |
||||
echo "unable to fetch config for $HOST" |
||||
fi |
||||
done |
||||
|
@ -0,0 +1,10 @@ |
||||
#!/usr/bin/expect -f |
||||
set hostname [lindex $argv 0] |
||||
set timeout 20 |
||||
spawn scp root@$hostname:running-config ./fetchedconfig |
||||
set pass "ROUTER_PASSWORD_HERE" |
||||
expect { |
||||
password: {send "$pass\r" ; exp_continue} |
||||
eof exit |
||||
} |
||||
|
@ -0,0 +1,92 @@ |
||||
#!/usr/bin/perl |
||||
|
||||
use strict; |
||||
use warnings qw( all ); |
||||
use WWW::Mechanize; |
||||
|
||||
our $u = 'WIKI_USERNAME'; |
||||
our $p = 'WIKI_PASSWORD'; |
||||
our $wikihost = 'wikihost.com' |
||||
our $debug = 1; |
||||
|
||||
main(); |
||||
|
||||
sub main { |
||||
|
||||
usage() unless @ARGV == 2; |
||||
|
||||
my $itemname = uc(shift(@ARGV)); |
||||
$itemname =~ s/[^A-Z0-9\-\_\.]//g; |
||||
my $pagename = $itemname . '/config'; |
||||
|
||||
my $filename = shift(@ARGV); |
||||
|
||||
open(INFILE,$filename) |
||||
or die("$0: can't open input file $filename for reading: $!\n"); |
||||
my $data; |
||||
read(INFILE,$data,1024*1024,0); #1mb sufficient |
||||
close(INFILE); |
||||
|
||||
|
||||
my $mech = WWW::Mechanize->new(); |
||||
|
||||
$mech->credentials( |
||||
$wikihost . ':443', |
||||
$wikihost, |
||||
$u => $p |
||||
); |
||||
|
||||
$mech->get('https://' . $wikihost . '/w/index.php?title=Special:Userlogin'); |
||||
|
||||
$mech->submit_form( |
||||
form_name => 'userlogin', |
||||
fields => { |
||||
wpName => $u, |
||||
wpPassword => $p, |
||||
}, |
||||
); |
||||
|
||||
$data =~ s/[\n\r]+/\n/gm; |
||||
|
||||
$data =~ s/^ntp clock\-period [0-9]+//gm; |
||||
|
||||
$data =~ s/^(.*)$/ $1/gm; |
||||
|
||||
# this wikifies hostnames conforming to a certian format |
||||
$data =~ s/\b([vV][0-9][0-9][A-Za-z][A-Za-z][0-9][0-9][0-9])\b/\[\[$1\]\]/gm; |
||||
|
||||
# this wikifies ip addresses |
||||
$data =~ s/\b([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\b/\[\[$1\]\]/gm; |
||||
|
||||
$mech->get("https://$wikihost/w/index.php?title=$pagename&action=edit"); |
||||
|
||||
$mech->submit_form( |
||||
form_name => 'editform', |
||||
fields => { |
||||
wpTextbox1 => "{{autogen}}\n\n". |
||||
"= [[$itemname]] configuration =\n\n". |
||||
"<code>$data". |
||||
"</code>\n". |
||||
"{{autofetched-router}}\n", |
||||
wpSummary => "auto-update via script by $u", |
||||
}, |
||||
); |
||||
|
||||
} |
||||
|
||||
sub usage { |
||||
print STDERR "usage: $0 <routername> <filename>\n"; |
||||
die; |
||||
} |
||||
|
||||
sub dout { |
||||
return unless defined($debug) && $debug; |
||||
my $msg = shift; |
||||
chomp $msg; |
||||
print STDERR "*** $msg\n"; |
||||
} |
||||
|
||||
|
||||
1; |
||||
|
||||
__END__ |
Carregando…
Referência em uma nova issue