それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

名前解決でdig コマンドの代わりになりそうなのもの(dig 代替でdnsを調べる)

Raspi インストールしたら dig がない。

dig がないんですよ、dig が。インストールするのも面倒だったので、なんか手軽に、dig の代わりになりそうなのものを考えてみた

通常は、dig を入れればいいんだけど。ping 打てばイイとおもうけど、名前解決ってどうやるんか考えてみた。

Python をつかってみたら

#!/usr/bin/env python

import socket
import sys
print socket.gethostbyname(sys.argv[1])

ruby をつかってみたら?

ruby ならワンライナーですかね

ruby -e "puts Resolv.getaddresses('mixi.jp')" -r resolv
require 'resolv'
puts Resolv.getaddresses( ARGV[1] )

ワンライナーを、bashに登録する

mydig() { ruby -r resolv  -e "puts Resolv.getaddresses('$1') "  ; }

こんな感じ?

gccが使えるなら

dig がインストールできないなら、gccもないとおもうけど、Raspiには入ってたので使える。

#include <stdio.h>
#include <netdb.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main(int argc,char **argv){
   char *str;
   struct addrinfo *res, *addi ;
   // getaddrinfo(const char *hostname, const char *servname, const struct addrinfo *hints, struct addrinfo **res);
   getaddrinfo( argv[1],NULL,NULL ,&res );

   addi = res;

   while( addi->ai_next != NULL ) {
     str = inet_ntoa(((struct sockaddr_in *)addi->ai_addr)->sin_addr);
     printf("%s\n", str );
     addi = addi->ai_next;
   }
   printf("end\n");
}

php でも出来るな

<?php


foreach( gethostbynamel($argv[1]) as $e ){
  echo $e."\n";
}

追記 java

Java も書けと言われたので

import java.net.*;
public class Resolve  {

  public static void main(String[] argv) throws Throwable {
  
    for( String name: argv ){
      InetAddress address = InetAddress.getByName( name );
      System.out.println(address.getHostAddress());
    }

  }
}

javaかいたら、scala も同じように

import java.net._

object Resolve {
    def main(args: Array[String]) : Unit = {
        args.foreach({ name =>
          val address = InetAddress.getByName( name )
          println( name + "\t" + address.getHostAddress() )
        })
      }
  }

追記 ついでのnode

#!/usr/bin/env node
/***
 * author takuya_1st
 * Released under  GPL Licenses.
 * Date:  2015-11-05 17:38
 */

var str  = process.argv[2];

var dns = require ('dns');

dns.resolve(str, function(err, addresses){
  console.log ( addresses ) ;
})

node/ javac/ scala についてはRaspi に最初から入ってないので要らないとおもったのですが。むしろScratch?