Guest User

Untitled

a guest
Jul 18th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.73 KB | None | 0 0
  1. #!/usr/bin/env perl
  2.  
  3. my $eng_dns = "141.217.202.31";
  4. my $wsu_dns = "141.217.154.162";
  5.  
  6. my @eng_doms = qw/
  7. eng.wayne.edu
  8. /;
  9.  
  10. my @wsu_doms = qw/
  11. bc.accs.wayne.edu
  12. chem.wayne.edu
  13. cs.wayne.edu
  14. eng.wayne.edu
  15. gluon.physics.wayne.edu
  16. hal.physics.wayne.edu
  17. igloo.wayne.edu
  18. lists.wayne.edu
  19. mail.physics.wayne.edu
  20. wayne.edu
  21. opus.pass.wayne.edu
  22. physics.wayne.edu
  23. thermal.physics.wayne.edu
  24. web-prod.wayne.edu
  25. zimbra.wayne.edu
  26. hr.wayne.edu
  27. busops.wayne.edu
  28. compbio.med.wayne.edu
  29. wdet.org
  30. detfm.org
  31. /;
  32.  
  33.  
  34. printf("%-20s %-40s %-8s\n", "Domain", "MX Value", "TTL");
  35. print "-" x 20, " ", "-" x 40, " ", "-" x 8, "\n";
  36.  
  37. foreach my $dom (@eng_doms) {
  38.     foreach my $mx (@{get_mx($dom, $eng_dns)}) {
  39.         if ($mx->{mx} =~ /(?:wsu-ironport01|mx1\.wayne\.edu)/) {
  40.             printf("%-20s %-40s %-8s\n", $dom, $mx->{mx}, $mx->{ttl});
  41.         }
  42.     }
  43. }
  44.  
  45. foreach my $dom (@wsu_doms) {
  46.     foreach my $mx (@{get_mx($dom, $wsu_dns)}) {
  47.         if ($mx->{mx} =~ /(?:wsu-ironport01|mx1\.wayne\.edu)/) {
  48.             printf("%-20s %-40s %-8s\n", $dom, $mx->{mx}, $mx->{ttl});
  49.         }
  50.     }
  51. }
  52.  
  53. sub get_mx {
  54.     my ($host, $dns) = @_;
  55.  
  56.     die "invalid hostname\n" unless $host =~ /^[\w\.\-]+$/;
  57.     die "invalid dns\n" unless $dns =~ /^[\w\.\-]+$/;
  58.  
  59.     open(DIG, '-|', "dig -t MX \@$dns $host");
  60.  
  61.     my $answer = 0;
  62.     my $response = [];
  63.     while (my $line = <DIG>) {
  64.         last if $answer && $line =~ /^[\r\n]}$/;
  65.         if ($answer) {
  66.             if ($line =~ /^$host\.\s+(\d+)\s+IN\s+MX\s+(.+)[\r\n]+$/) {
  67.                 push(@$response, { ttl => $1, mx => $2 });
  68.             }
  69.         } elsif ($line =~ /ANSWER SECTION/) {
  70.             $answer = 1;
  71.         }
  72.     }
  73.  
  74.     close(DIG);
  75.  
  76.     return $response;
  77. }
Add Comment
Please, Sign In to add comment