build_ips.pl 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #!/usr/bin/perl
  2. use strict;
  3. use DBI;
  4. use vars qw(%VLANS $DB_USER $DB_PASS);
  5. require 'dbi.ph';
  6. %VLANS = (
  7. 'SDCC' =>
  8. {'ip' => '10.101', 'vlan' => 'Vlan100', 'gw' => '10.101.0.1',},
  9. 'NODE' =>
  10. {'ip' => '10.102', 'vlan' => 'Vlan100', 'gw' => '10.102.0.1',},
  11. 'HILTON' =>
  12. {'ip' => '10.103', 'vlan' => 'Vlan100', 'gw' => '10.103.0.1',},
  13. 'HYATT' =>
  14. {'ip' => '10.104', 'vlan' => 'Vlan100', 'gw' => '10.104.0.1',},
  15. );
  16. my $dsn = "DBI:mysql:database=noc";
  17. my $dbh = DBI->connect($dsn, $DB_USER, $DB_PASS, {PrintError => 0})
  18. or die "ERROR: Failed to connect to the database.";
  19. foreach my $loc (keys %VLANS) {
  20. my $lref = $VLANS{$loc};
  21. my $vlan = $lref->{'vlan'};
  22. my $ip = $lref->{'ip'};
  23. my $gw = $lref->{'gw'};
  24. for (my $i = 1 ; $i < 256 ; $i++) {
  25. for (my $j = 1 ; $j < 255 ; $j++) {
  26. my $sql =
  27. 'REPLACE INTO ADDRESSES (address, router, mask, mgmt_vlan, location, used) VALUES (?, ?, ?, ?, ?, ?)';
  28. my $sth = $dbh->prepare($sql);
  29. if (!$sth) {
  30. print STDERR "Failed to prepare query '$sql': "
  31. . $dbh->errstr . "\n";
  32. next;
  33. }
  34. my @params = (
  35. $ip . ".$i.$j",
  36. $gw, '255.255.0.0', $vlan, $loc, '0'
  37. );
  38. my $res = $sth->execute(@params);
  39. if (!$res) {
  40. print STDERR "Failed to execute query '$sql': "
  41. . $dbh->errstr . "\n";
  42. next;
  43. }
  44. }
  45. }
  46. }