Node JS - FQDN 가져오기 [닫기]

Node JS - FQDN 가져오기 [닫기]

노드를 실행하는 컴퓨터의 FQDN(정규화된 도메인 이름)을 얻으려면 어떻게 해야 합니까?

os.gethostname()일반적으로 정규화되지 않은 DN만 반환하므로 충분하지 않습니다. 마찬가지입니다 dns.reverse(ip, callback). ip가 호스트 이름과 연결된 IP라고 가정합니다 dns.lookup(os.gethostname()[, options], callback).

또한 a를 하는 shell.exec("hostname -f", { silent: true }, cb)것은 선택 사항이 아닙니다.POSIX 표준을 준수하지 않음예를 들어 Solaris 등에서는 실패합니다. 잠깐, 이것은 정말 나쁜 해킹입니다. 왜냐하면 exec()는 매우 매우값비싼전화주세요. RAM 및 CPU와 같은 리소스(컨텍스트 전환 유발)

답변1

getnameinfo(...)비결은 기본적으로 FQDN 조회를 수행하므로 일반적으로 libc.so 또는 libsocket.so를 통해 운영 체제에서 제공하는 기능을 활용하는 것입니다 . 이를 "래핑"하는 문서화된 유일한 nodeJS 핵심 함수인 것 같으 므로 dns.lookupService(address, port, callback)이를 사용해야 합니다. 예를 들어:

var os = require('os');
var dns = require('dns');

var h = os.hostname();
console.log('UQDN: ' + h);

dns.lookup(h, { hints: dns.ADDRCONFIG }, function(err, ip) {
    console.log('IP: ' + ip);
    dns.lookupService(ip, 0, function (err, hostname, service) {
        if (err) {
            console.log(err);
            return;
        }
        console.log('FQDN: ' + hostname);
        console.log('Service: ' + service);
    });
});

예제에서는 포트 0이 결과에 영향을 미치지 않음을 보여주기 위해 사용되었습니다(기본적으로 이 포트에 대해 정의된 서비스가 없습니다).

관련 정보