aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorKristian Lyngstol <kristian@bohemians.org>2016-03-27 08:27:17 +0200
committerKristian Lyngstol <kristian@bohemians.org>2016-03-27 08:27:17 +0200
commit1d2470a411e5eaac7e5a1c5d5b6b81e92c92f4a8 (patch)
tree54b901757b088d54d33e70f28a6203383b4dc844 /tools
parent0a230ac5481b9518abc64181dbbb4509d83c0b89 (diff)
parent96a9bb4c42f4b53020302fea2a46e734c61c0319 (diff)
Merge branch 'master' of github.com:tech-server/tgmanage
Diffstat (limited to 'tools')
-rwxr-xr-xtools/generate-dnsrr.pl5
-rwxr-xr-xtools/generate-rowdns.pl132
-rwxr-xr-xtools/get_mibs.sh5
-rwxr-xr-xtools/make-accesspoints.pl24
-rwxr-xr-xtools/make-linknet-hosts.pl36
-rwxr-xr-xtools/make-switches.pl36
6 files changed, 100 insertions, 138 deletions
diff --git a/tools/generate-dnsrr.pl b/tools/generate-dnsrr.pl
index ad9230c..99ff395 100755
--- a/tools/generate-dnsrr.pl
+++ b/tools/generate-dnsrr.pl
@@ -19,6 +19,9 @@
# Command-syntax to send this to nsupdate, running it on the DNS server:
# cat file.txt | tools/generate-dnsrr.pl --dom foo -ns | ssh $dnsserver "nsupdate -k /etc/bind/Kdhcp_updater.+157+XXXXX"
#
+# Generate DNS for linknets:
+# cat /tmp/linknets.txt | perl -wple 's,;, ,g' | perl tools/make-linknet-hosts.pl | tools/generate-dnsrr.pl --domain tgXX.gathering.org -ns -rev | ssh $dnsserver "nsupdate -k /etc/bind/Kdhcp_updater.XXXXX"
+#
# Format of input:
# hostname ipv4-adress ipv6-address
# If any of ipv4-address or ipv6-address are NOT set for the host, specify "nope"
@@ -99,7 +102,6 @@ sub print_ptr{
unless ( $ipv4 eq "nope" ) {
my $v4 = new Net::IP($ipv4);
- print "prereq nxdomain " . $v4->reverse_ip() . "\n" unless $delete;
print "update add " . $v4->reverse_ip() . " 3600 IN PTR " . $hostname . $domain .".\n" unless $delete;
print "update delete " . $v4->reverse_ip() . " IN PTR\n" if $delete;
print "send\n";
@@ -109,7 +111,6 @@ sub print_ptr{
if (( not ($ipv6 eq "nope") ) && ( $ipv6 )) {
my $v6 = new Net::IP($ipv6);
- print "prereq nxdomain " . $v6->reverse_ip() . "\n" unless $delete;
print "update add " . $v6->reverse_ip() . " 3600 IN PTR " . $hostname . $domain . ".\n" unless $delete;
print "update delete " . $v6->reverse_ip() . " IN PTR\n" if $delete;
print "send\n";
diff --git a/tools/generate-rowdns.pl b/tools/generate-rowdns.pl
index 1cc2b8d..a7b9aef 100755
--- a/tools/generate-rowdns.pl
+++ b/tools/generate-rowdns.pl
@@ -5,6 +5,10 @@ BEGIN {
require "include/config.pm";
}
+use JSON -support_by_pp;
+use LWP 5.64;
+use LWP::UserAgent;
+use Net::SSL; # needed, else LWP goes into emo-mode
use Net::IP;
use NetAddr::IP;
use Getopt::Long;
@@ -18,75 +22,81 @@ if (@ARGV > 0) {
}
# Use this to generate nsupdate for all edge switches
-# Expects joined input from switches.txt and patchlist.txt
-## paste -d' ' switches.txt <(cut -d' ' -f3- patchlist.txt) > working-area/switches-patchlist.txt
-print "server $nms::config::pri_v4\n";
+# fetch PI API content
+sub get_url{
+ my $url = shift;
-while (<STDIN>){
- # e73-4 151.216.160.64/26 2a02:ed02:160b::/64 151.216.181.141/26 2a02:ed02:181c::141/64 1734 distro6 @ports
- my ( $swname, $client_v4, $client_v6, $sw_v4, $sw_v6, $vlan, $distro, @ports ) = split;
-
- (my $v4gw = NetAddr::IP->new($client_v4)->first()) =~ s/\/[0-9]{1,2}//;
- (my $v6gw = NetAddr::IP->new($client_v6)->first()) =~ s/\/[0-9]{1,2}//;
+ $ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0; # just to be sure :-D
+ my $ua = LWP::UserAgent->new;
+ my $req = HTTP::Request->new(GET => $url);
+ $req->authorization_basic($nms::config::nmsapi_user, $nms::config::nmsapi_pass);
+
+ return $ua->request($req)->content();
+}
+
+my $json_obj = new JSON;
+my $json_content = get_url($nms::config::nmsapi_url . "/api/read/switches-management");
+if($json_content){
+ my $json = $json_obj->allow_nonref->utf8->relaxed->escape_slash->loose->allow_singlequote->allow_barekey->decode($json_content);
- (my $v4mgmt = $sw_v4) =~ s/\/[0-9]{1,2}//;
- (my $v6mgmt = $sw_v6) =~ s/\/[0-9]{1,2}//;
+ print "server $nms::config::pri_v4\n";
- my $fqdn = $swname . "." . $nms::config::tgname . ".gathering.org.";
- my $sw_fqdn = "sw." . $fqdn;
- my $gw_fqdn = "gw." . $fqdn;
- my $text_info = $distro . ", vlan $vlan, " . join(' + ', @ports);
+ foreach my $switch (values %{$json->{switches}}){
+ next unless ($switch->{subnet4}); # require at least IPv4 client subnet
+ next unless ($switch->{sysname} =~ m/^e[0-9]+?\-/); # only rows
+
+ (my $v4mgmt = $switch->{mgmt_v4_addr}) =~ s/\/[0-9]{1,2}//;
+ (my $v6mgmt = $switch->{mgmt_v6_addr}) =~ s/\/[0-9]{1,2}//;
+ (my $v4gw = NetAddr::IP->new($switch->{subnet4})->first()) =~ s/\/[0-9]{1,2}//;
+ (my $v6gw = NetAddr::IP->new($switch->{subnet6})->first()) =~ s/\/[0-9]{1,2}//;
+
+ my $fqdn = $switch->{sysname} . "." . $nms::config::tgname . ".gathering.org.";
+ my $sw_fqdn = "sw." . $fqdn;
+ my $gw_fqdn = "gw." . $fqdn;
- # A and AAAA-record to the switch
- if($delete){
- print "update delete $sw_fqdn \t IN A\n";
- print "update delete $sw_fqdn \t IN AAAA\n";
- } else {
- print "update add $sw_fqdn \t 3600 IN A \t $v4mgmt\n";
- print "update add $sw_fqdn \t 3600 IN AAAA \t $v6mgmt\n";
- }
- print "send\n";
-
- # PTR to the switch
- if($delete){
- print "update delete " . Net::IP->new($v4mgmt)->reverse_ip() . " \t IN PTR\n";
- print "send\n";
- print "update delete " . Net::IP->new($v6mgmt)->reverse_ip() . " \t IN PTR\n";
- } else {
- print "update add " . Net::IP->new($v4mgmt)->reverse_ip() . " \t 3600 IN PTR \t $sw_fqdn\n";
+ # A and AAAA-record to the switch
+ if($delete){
+ print "update delete $sw_fqdn \t IN A\n";
+ print "update delete $sw_fqdn \t IN AAAA\n";
+ } else {
+ print "update add $sw_fqdn \t 3600 IN A \t $v4mgmt\n";
+ print "update add $sw_fqdn \t 3600 IN AAAA \t $v6mgmt\n";
+ }
print "send\n";
- print "update add " . Net::IP->new($v6mgmt)->reverse_ip() . " \t 3600 IN PTR \t $sw_fqdn\n";
- }
- print "send\n";
-
- # TXT-record with details
- if($delete){
- print "update delete $sw_fqdn \t IN TXT\n";
- } else {
- print "update add $sw_fqdn \t 3600 IN TXT \t \"" . $text_info . "\"\n";
- }
- print "send\n";
- # A and AAAA-record to the gateway/router
- if($delete){
- print "update delete $gw_fqdn \t IN A\n";
- print "update delete $gw_fqdn \t IN AAAA\n";
- } else {
- print "update add $gw_fqdn \t 3600 IN A \t $v4gw\n";
- print "update add $gw_fqdn \t 3600 IN AAAA \t $v6gw\n";
- }
- print "send\n";
-
- # PTR to the gateway/router
- if($delete){
- print "update delete " . Net::IP->new($v4gw)->reverse_ip() . " \t IN PTR\n";
+ # PTR to the switch
+ if($delete){
+ print "update delete " . Net::IP->new($v4mgmt)->reverse_ip() . " \t IN PTR\n" if $v4mgmt;
+ print "send\n" if $v4mgmt;
+ print "update delete " . Net::IP->new($v6mgmt)->reverse_ip() . " \t IN PTR\n" if $v6mgmt
+ } else {
+ print "update add " . Net::IP->new($v4mgmt)->reverse_ip() . " \t 3600 IN PTR \t $sw_fqdn\n" if $v4mgmt;
+ print "send\n" if $v4mgmt;
+ print "update add " . Net::IP->new($v6mgmt)->reverse_ip() . " \t 3600 IN PTR \t $sw_fqdn\n" if $v6mgmt;
+ }
print "send\n";
- print "update delete " . Net::IP->new($v6gw)->reverse_ip() . " \t IN PTR\n";
- } else {
- print "update add " . Net::IP->new($v4gw)->reverse_ip() . " \t 3600 IN PTR \t $gw_fqdn\n";
+
+ # A and AAAA-record to the gateway/router
+ if($delete){
+ print "update delete $gw_fqdn \t IN A\n";
+ print "update delete $gw_fqdn \t IN AAAA\n";
+ } else {
+ print "update add $gw_fqdn \t 3600 IN A \t $v4gw\n" if $v4gw;
+ print "update add $gw_fqdn \t 3600 IN AAAA \t $v6gw\n" if $v6gw;
+ }
print "send\n";
- print "update add " . Net::IP->new($v6gw)->reverse_ip() . " \t 3600 IN PTR \t $gw_fqdn\n";
+
+ # PTR to the gateway/router
+ if($delete){
+ print "update delete " . Net::IP->new($v4gw)->reverse_ip() . " \t IN PTR\n" if $v4gw;
+ print "send\n" if $v4gw;
+ print "update delete " . Net::IP->new($v6gw)->reverse_ip() . " \t IN PTR\n" if $v6gw;
+ } else {
+ print "update add " . Net::IP->new($v4gw)->reverse_ip() . " \t 3600 IN PTR \t $gw_fqdn\n" if $v4gw;
+ print "send\n" if $v4gw;
+ print "update add " . Net::IP->new($v6gw)->reverse_ip() . " \t 3600 IN PTR \t $gw_fqdn\n" if $v6gw;
+ }
+ print "send\n";
}
- print "send\n";
}
diff --git a/tools/get_mibs.sh b/tools/get_mibs.sh
index cab9fa3..7c8cc52 100755
--- a/tools/get_mibs.sh
+++ b/tools/get_mibs.sh
@@ -1,6 +1,5 @@
#!/bin/sh
-MIBS="SNMPv2 ENTITY IF LLDP IP IP-FORWARD"
ORIGPWD=$PWD
TMP=$(mktemp -d)
set -x
@@ -10,9 +9,7 @@ wget ftp://ftp.cisco.com/pub/mibs/v2/v2.tar.gz
tar xvzf v2.tar.gz --strip-components=2
mkdir -p mibs
-for a in $MIBS; do
- cp v2/$a-MIB.my mibs/
-done
+cp v2/* mibs/
mv mibs ${ORIGPWD}/
cd ${ORIGPWD}
rm -rf ${TMP}
diff --git a/tools/make-accesspoints.pl b/tools/make-accesspoints.pl
deleted file mode 100755
index b84321a..0000000
--- a/tools/make-accesspoints.pl
+++ /dev/null
@@ -1,24 +0,0 @@
-#! /usr/bin/perl
-use strict;
-use warnings;
-
-while (<>) {
- my @arr = split " ";
- my $ap = 'ap-'.$arr[0];
- my $core = $arr[1];
- # Trekk fra 1
- $core =~ s/^(distro)(\d+)$/$1.($2-1)/e;
-
- # Fjerde kabel er aksesspunkt
- my $blade;
- my $port;
- if ($arr[5] =~ /^Gi(\d+)\/(\d+)$/) {
- $blade = $1;
- $port = $2;
- } else {
- die "Unknown port: ".$arr[5];
- }
- printf "INSERT INTO switches(ip, sysname, switchtype) values(inet '127.0.0.1', '%s', 'ciscoap');\n", $ap;
- printf "INSERT INTO uplinks SELECT (SELECT switch FROM switches WHERE sysname = '%s') AS switch, (SELECT switch FROM switches WHERE sysname = '%s') AS coreswitch, %d AS blade, %d AS port;\n", $ap, $core, $blade, $port;
- printf "INSERT INTO ap_poll(switch) SELECT switch FROM switches WHERE sysname = '%s';\n", $ap;
-}
diff --git a/tools/make-linknet-hosts.pl b/tools/make-linknet-hosts.pl
index 1db630a..c00e81b 100755
--- a/tools/make-linknet-hosts.pl
+++ b/tools/make-linknet-hosts.pl
@@ -24,21 +24,35 @@ while (<STDIN>) {
my ($ipv4_raw, $ipv6_raw, $from, $to) = split;
- # v4
- my $ipv4_first = NetAddr::IP->new($ipv4_raw);
- my $ipv4_second = $ipv4_first + 1;
-
- # v6
- my $ipv6_first = NetAddr::IP->new($ipv6_raw);
- my $ipv6_second = $ipv6_first + 1;
+ my ($ipv4_first, $ipv4_second, $ipv6_first, $ipv6_second);
+ if($ipv6_raw =~ m/nope/){
+ $ipv6_first = "nope";
+ $ipv6_second = "nope";
+ } else {
+ my $ipv6 = NetAddr::IP->new($ipv6_raw);
+ $ipv6_first = $ipv6->addr();
+ $ipv6++;
+ $ipv6_second = $ipv6->addr();
+ }
+
+ if($ipv4_raw =~ m/nope/){
+ $ipv4_first = "";
+ $ipv4_second = "";
+ } else {
+ my $ipv4 = NetAddr::IP->new($ipv4_raw);
+ $ipv4_first = $ipv4->addr();
+ $ipv4++;
+ $ipv4_second = $ipv4->addr;
+ }
+
# generate-dnsrr.pl format:
# hostname ipv4 ipv6
if($first){
- printf("%s %s %s\n", $from, $ipv4_first->addr, $ipv6_first->addr);
- printf("%s %s %s\n", $to, $ipv4_second->addr, $ipv6_second->addr);
+ printf("%s %s %s\n", $from, $ipv4_first, $ipv6_first);
+ printf("%s %s %s\n", $to, $ipv4_second, $ipv6_second);
} else {
- printf("%s-%s %s %s\n", $from, $to, $ipv4_first->addr, $ipv6_first->addr);
- printf("%s-%s %s %s\n", $to, $from, $ipv4_second->addr, $ipv6_second->addr);
+ printf("%s-%s %s %s\n", $from, $to, $ipv4_first, $ipv6_first);
+ printf("%s-%s %s %s\n", $to, $from, $ipv4_second, $ipv6_second);
}
}
diff --git a/tools/make-switches.pl b/tools/make-switches.pl
deleted file mode 100755
index c0c842a..0000000
--- a/tools/make-switches.pl
+++ /dev/null
@@ -1,36 +0,0 @@
-#! /usr/bin/perl
-
-use strict;
-use warnings;
-
-my $switchtype = "ex2200";
-
-print "begin;\n";
-print "delete from temppoll;\n";
-print "delete from dhcp;\n";
-print "delete from switches where switchtype = '$switchtype';\n";
-#print "SELECT pg_catalog.setval('switches_switch_seq', 1, false);\n";
-print "SELECT pg_catalog.setval('polls_poll_seq', 1, false);\n";
-
-my %ip;
-my $i = 1;
-while (<STDIN>) {
- chomp;
- my @info = split(/ /);
-
- if (scalar @info < 5) {
- die "Unknown line: $_";
- }
-
- my $name = $info[0];
- my $range = $info[1];
- my $ip = $info[3];
- $ip =~ s/\/.*$//;
-
-
- print "insert into switches (ip, sysname, switchtype) values ('$ip', '$name', '$switchtype');\n";
- print "insert into dhcp select switch, '$range' from switches where sysname = '$name';\n";
-}
-close HOSTS;
-
-print "end;\n";