Heim  >  Artikel  >  php教程  >  PowerShell erstellt eine PTR-Reverse-Abfrage für vorhandene DNS-Einträge

PowerShell erstellt eine PTR-Reverse-Abfrage für vorhandene DNS-Einträge

高洛峰
高洛峰Original
2016-11-23 17:25:211435Durchsuche

Heute Morgen hat Douzi zufällig entdeckt, dass der DNS-Server des Unternehmens nur über eine Weiterleitungsauflösung, aber keinen entsprechenden PTR-Eintrag verfügt. Mit anderen Worten: Die IP-Adresse kann über den Domänennamen aufgelöst werden, umgekehrt kann die IP-Adresse den Domänennamen jedoch nicht finden.

Ich habe in 1 Stunde ein sehr einfaches Skript geschrieben, um festzustellen, ob die vorhandenen Datensätze über entsprechende Reverse-Zone- und PTR-Datensätze verfügen. Wenn nicht, werden diese automatisch für mich erstellt.

Die Idee ist sehr einfach und das Skript ist relativ grob. Es gibt keine Fehlertoleranzverarbeitung oder -optimierung, aber es ist gut, die Funktion zu implementieren.

$ptrzones=Get-DnsServerzone -ComputerName syddc01 | Where-Object {$_.zonename -like "*.arpa"}
#获取所以的A记录
$machines=Get-DnsServerResourceRecord -ComputerName syddc01 -RRType A -ZoneName 'omnicom.com.au'| select @{n='IP';e={$_.recorddata.IPV4Address.IPAddressToString}}, hostname, timestamp, @{n='PTRZone';e={$temp=$_.recorddata.IPV4Address.IPAddressToString.split('.');$t=$temp[2]+'.'+$temp[1]+'.'+$temp[0]+‘.in-addr.arpa’;$t}}
 
foreach($machine in $machines){
   
  #判断是否存在PTR的reverse zone
  write-host $machine.hostname
  write-host $machine.PTRZone 
  $flag=0
  foreach($p in $ptrzones){
    if($p.zonename -eq $machine.PTRZone){
        #write-host " Matched PTR Zone" -BackgroundColor Cyan
        $flag=1
        break
        }
   
  }
  #如果PTR Zone不存在,创建一个对应的
  if($flag -eq 0){
    write-host " PTRZone is Missing,A new PTRZone will be created" -ForegroundColor Red
    $temp=$machine.IP.Split('.')
    $range=$temp[0]+'.'+$temp[1]+'.'+$temp[2]+".0/24"
    #$range
    Add-DnsServerPrimaryZone -DynamicUpdate Secure -NetworkId $range -ReplicationScope Domain -ComputerName syddc01
  }
  else{
   
    #如果PTR zone存在,判断是否存在对应的PTR记录
    $hname=Get-DnsServerResourceRecord -ComputerName syddc01 -RRType Ptr -ZoneName $machine.PTRZone | select @{n='name';e={$_.recorddata.ptrdomainname}}
    #$hname
    $temp="*"+$machine.hostname+"*"
    if($hname -like $temp){
         
       Write-Host "Already exist" -ForegroundColor Cyan
     
    }
    else{
        #PTR Zone存在 但是PTR记录不存在
        Write-Host "Adding PTR record" -ForegroundColor Yellow
        Add-DnsServerResourceRecordPtr -ComputerName syddc01 -ZoneName $machine.PTRZone -Name $machine.IP.Split('.')[3] -AllowUpdateAny -TimeToLive 01:00:00 -AgeRecord -PtrDomainName $machine.hostname 
    }
    }
   
   
  }

Skript ausführen

PowerShell erstellt eine PTR-Reverse-Abfrage für vorhandene DNS-Einträge

Ergebnis

PowerShell erstellt eine PTR-Reverse-Abfrage für vorhandene DNS-Einträge

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Einige Details zu MybatisNächster Artikel:Einige Details zu Mybatis