Maria: dns_get_record <- welcher Nameserver

Mit dns_get_record kann man ja die Nameservereinträge abfragen. Aber ich habe nirgends gefunden, welcher DNSserver über diese funktion abgefrat wird, bzw. wie man diese ändert um einen bestimmten abzufragen?

Maria

  1. Aber ich habe nirgends gefunden, welcher DNSserver über diese funktion abgefrat wird,

    Den, der in

    /etc/resolv.conf

    steht?

    bzw. wie man diese ändert um einen bestimmten abzufragen?

    Tja. Da würde ich, der Bequemlichkeit wegen, die üblichen Verdächtigen (nslookup, dig, host) in einer Subshell hochnotpeinlich befragen.

    Jörg Reinholz

    1. Tja. Da würde ich, der Bequemlichkeit wegen, die üblichen Verdächtigen (nslookup, dig, host) in einer Subshell hochnotpeinlich befragen.

      Noch zwei Hinweise:

      A) Das geht. B) behandle die übergebenen Werte mit escapeshellarg

      also

      $shell='host ' . escapeshellarg( trim( $_GET['hostname'] ) ) . ' 8.8.8.8';
      echo ln2br ( htmlspecialchars ( `$shell` ) );
      
      

      Jörg Reinholz

      1. Hallo Jörg,

        wenn ich dich richtig verstanden habe, meinst du so:

        
        $abfrage='www.example.com';
        $shell='host ' . escapeshellarg( trim( $abfrage ) ) . ' 8.8.8.8';
        echo ln2br ( htmlspecialchars ( `$shell` ) );
        
        

        es geht nicht, und ich verstehe es auch nicht. Auch wenn ich mir deine Beispiele wirklich sehr genau angesehen habe.

        Wenn dann müsste doch mit dem Ergebnis aus:  htmlspecialchars ( $shell ) irgendetwas noch gemacht werden?

        Maria

        1. Wenn dann müsste doch mit dem Ergebnis aus:  htmlspecialchars ( $shell ) irgendetwas noch gemacht werden?

          Aber klar! Das ist Text, den ein Programm erzeugt hat, der also (je nach Programm: in gewissen Grenzen) immer gleichförmig ist.

          Nehmen wir:

          ~> host google.com 8.8.8.8

          Das wirft:

          Using domain server: Name: 8.8.8.8 Address: 8.8.8.8#53 Aliases:

          google.com has address 85.182.250.20 google.com has address 85.182.250.54 google.com has address 85.182.250.45 google.com has address 85.182.250.59 google.com has address 85.182.250.34 google.com has address 85.182.250.50 google.com has address 85.182.250.24 google.com has address 85.182.250.40 google.com has address 85.182.250.44 google.com has address 85.182.250.49 google.com has address 85.182.250.55 google.com has address 85.182.250.29 google.com has address 85.182.250.30 google.com has address 85.182.250.25 google.com has address 85.182.250.39 google.com has address 85.182.250.35 google.com has IPv6 address 2a00:1450:4013:c01::8a google.com mail is handled by 40 alt3.aspmx.l.google.com. google.com mail is handled by 30 alt2.aspmx.l.google.com. google.com mail is handled by 10 aspmx.l.google.com. google.com mail is handled by 50 alt4.aspmx.l.google.com. google.com mail is handled by 20 alt1.aspmx.l.google.com.

          nehmen wir:

          ~$ host wiki.selfhtml.org 8.8.4.4 Using domain server: Name: 8.8.4.4 Address: 8.8.4.4#53 Aliases:

          wiki.selfhtml.org has address 217.11.54.57

          Alles. Klar: Die Ausgaben noch durch ein "grep" jagen"

          host google.com 8.8.8.8 | grep "has adress" (wir nehmen nur die Zweilen, wo das drin steht...

          Dann noch durch cut: (wir brauchen  die 4. Spalte der durch Leerzeichen getrennten Tabelle)

          ~$ host google.com 8.8.8.8 | grep "has address" | cut -d " " -f4

          85.182.250.152 85.182.250.167 85.182.250.178 85.182.250.168 85.182.250.177 85.182.250.148 85.182.250.173 85.182.250.157 85.182.250.162 85.182.250.187 85.182.250.163 85.182.250.172 85.182.250.158 85.182.250.182 85.182.250.153 85.182.250.183

          Woop!  Machen wir PHP daraus:

          $shell = '[host](http://unixhelp.ed.ac.uk/CGI/man-cgi?host) ' . escapeshellarg( trim( $abfrage ) ) . ' ' . $dnsServer . ' | [grep](http://unixhelp.ed.ac.uk/CGI/man-cgi?grep) "has address" | [cut](http://unixhelp.ed.ac.uk/CGI/man-cgi?cut) -d " " -f4';
          
          $arErgebnisse=exlode("\n", `$shell`);
          if count($arErgebnisse) {
             # Was immer Du damit tun willst. z.B. das Erste ausgeben:
             echo 'IP: ', htmlspecialchars(trim($arErgebnisse[0]));
          } else {
             # Tja. Da war nichts.
          }
          
          

          Ergebnis:

          IP: 85.182.250.152

          Ach so. Das Trimmen ist wichtig. Zumindest in meinem Terminal kommen da immer mal sehr lange Zeilen zurück.

          Jörg Reinholz