Raspi インストールしたら dig がない。
dig がないんですよ、dig が。インストールするのも面倒だったので、なんか手軽に、dig の代わりになりそうなのものを考えてみた
通常は、dig を入れればいいんだけど。ping 打てばイイとおもうけど、名前解決ってどうやるんか考えてみた。
Python をつかってみたら
#!/usr/bin/env python import socket import sys print socket.gethostbyname(sys.argv[1])
ruby をつかってみたら?
ruby -e "puts Resolv.getaddresses('mixi.jp')" -r resolv
require 'resolv' puts Resolv.getaddresses( ARGV[1] )
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()); } } }
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?