-1

私はこのスクリプトに近づいていると思っています。ドメイン名を1行だけ出力ファイルに書き出すことができるようになりました。理想的には、返されるすべての配列に対してすべての配列フィールドを書き出す必要があります。

function getDNS(){      
    if(file_exists($outputFile)){                                                 unlink($outputFile);                              
    }
    $outputFile = 'DNS-Output.csv';     
    $inputFile = fopen('DNS-input.csv','r');
    $output = NULL;
    //make sure we loop through to end of file contents
    $newOutput = 'Domain, IP Address, Exiration Date, Record Type, TTL, Cloud' . PHP_EOL;
    $output .= $newOutput;
    while (!feof($inputFile)) {
        $line = fgets($inputFile, 4096); 
        $array = explode(",",$line);
        $result = dns_get_record($array[0], DNS_A + DNS_SOA); // get DNS info
        if ( ! is_array( $result )){
        $results = explode(",",$result);
        }
        print_r($result);
        $whois = shell_exec("whois " . $result[0]['ip'] . " | grep" . " NetName"); 
        $whois = preg_split("/[\s,]+/", $whois);
        if ( ! is_array( $whois )){
        $result = explode(",",$whois);
        }
        //if array
         if ( is_array($whois)){
         $whois[0]['host'].", " . PHP_EOL;              // Domain Name
         //print_r($whois); 
        }

        foreach ($whois as $record) {
           $output .=  $record;
          /* $output .=     
           $record['host'].", " .               // Domain Name
           $record['ip'].", ".                   // IP Address
           $record['type'].", ".                 // Type of Record               
           $record['minimum-ttl'].", ".PHP_EOL;       // Minimum TTL
           */
        }
    file_put_contents($outputFile, $output);                // Create CSV File
    }
    //file_put_contents($outputFile, $output);              // Create CSV File
    fclose($inputFile);
    }

getDNS();

そして、これが私がルックアップを行っている入力csvファイルからの例の行です...。

somedomain.COM,.com,9/14/06 19:03,9/14/12 19:03,Active,Public,Locked,"ns31.domaincontrol.com(), ns32.domaincontrol.com()",,

配列要素をcsv出力ファイルの適切な列に書き出すための最良の方法を探しています。

4

2 に答える 2

1

出力を書き込むときに、間違った最初の次元を使用しています。dns_get_record() は、その最初の次元でグループ化された複数の DNS レコードを取得します。これは、代わりに列として扱っています。

これではなく:

    $whois[0]['host'].", " . PHP_EOL;               // Domain Name
    $whois[2]['ip'].", ".                   // IP Address
    $whois[5]['type'].", ".                 // Type of Record               
    $result[1]['minimum-ttl'].", ".         // Minimum TTL
    $whois[1] . PHP_EOL;                    // Cloud 

次のようなものが必要です。

foreach ($whois as $record) {
    $record['host'].", " . PHP_EOL;               // Domain Name
    $record['ip'].", ".                   // IP Address
    $record['type'].", ".                 // Type of Record               
    $record['minimum-ttl'].", ".PHP_EOL         // Minimum TTL
}
于 2012-09-06T07:55:22.390 に答える