বাশ: অনুসন্ধানে / ইত্যাদি / হোস্ট সহ একটি হোস্ট নামের জন্য একটি আইপি খুঁজছেন


16

উবুন্টু 10.10+

আমার স্ক্রিপ্টে আমাকে প্রদত্ত হোস্টের নামের জন্য আইপি অনুসন্ধান করতে হবে।

যদি সেই নামটি তালিকাভুক্ত থাকে /etc/hostsতবে কমান্ডটি আইপি প্রিন্ট করবে /etc/hosts, ডিএনএস সার্ভার থেকে নয়।

কি কমান্ড আমি চেষ্টা ( nslookup, dig, host), সম্পূর্ণরূপে উপেক্ষা করা /etc/hosts- অন্তত নাম যে DNS সার্ভারের সাথে পরিচিত না হয় জন্য।

দ্রষ্টব্য: আমি এমন সমাধানটি পছন্দ করবো যা আমাকে /etc/hostsহাতে হাতে গ্রেপ করতে হবে না ।

উত্তর:


22

getent সমস্ত কনফিগার করা উত্স জিজ্ঞাসা করতে নিম্ন-স্তরের গ্লিবসি তথ্য ফাংশন ব্যবহার করে।

$ getent ahosts amd.com
163.181.249.32  STREAM amd.com
163.181.249.32  DGRAM  
163.181.249.32  RAW    
$ getent ahosts ipv6.google.com
2001:4860:b009::69 STREAM ipv6.l.google.com
2001:4860:b009::69 DGRAM  
2001:4860:b009::69 RAW    

2
getent hosts amd.comসম্ভবত কিছুটা সহজ
হাইগুইটা

6
$ gethostip localhost
localhost 127.0.0.1 7F000001
$ gethostip -d example.org
192.0.43.10

syslinuxপ্যাকেজটি থেকে কমপক্ষে উবুন্টু 12.04 এ।


3

এটি সুপার-হ্যাকি , তবে আমি এটি যুগ যুগ ধরে ব্যবহার করে আসছি এবং এটি কাজ করে ( আইপিভি 4 এর জন্য):

function ipfor() {
  ping -c 1 $1 | grep -Eo -m 1 '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}';
}

এর মতো ব্যবহার করুন: ipfor google.com


হ্যাকি তবে পোর্টেবল। আমার মত.
luis.espinal

0

আমি কেবল 'হোস্ট' সেন্টিমিটার ইনপ্যাটের বিকল্প হিসাবে প্রতিস্থাপন হিসাবে ব্যবহার করি। এটি স্বয়ংক্রিয়ভাবে কিছু সীমাবদ্ধতার (সঠিক আইপিভি 4) সঠিক কাজ করবে।

myhost.c:

#include <stdio.h>
#include <stdlib.h>
#include <netdb.h>
#include <errno.h>
#include <string.h>

#define TOIN(a) ((struct sockaddr_in *)&(a))

main(argc, argv)
    char **argv;
{
    int err;
    struct sockaddr sa;
    char hbuf[NI_MAXHOST];

    if (argc <= 1) {
        printf("more args\n");
        exit(-1);
    }
    TOIN(sa)->sin_family = AF_INET;
    if (inet_pton(AF_INET, *(argv + 1), &TOIN(sa)->sin_addr) != 1) {
        printf("can't inet_pton: %s\n", errno ? strerror(errno) : "format err");
        exit(-1);
    }
    if (err = getnameinfo(&sa, sizeof(struct sockaddr_in), hbuf, sizeof hbuf, 0, 0, NI_NAMEREQD)) {
//        printf("%s\n", gai_strerror(err));
        printf("Host %s not found: 3(NXDOMAIN)\n", *(argv + 1));
        exit(-1);
    } else {
        printf("%s\n", hbuf);
        exit(0);
    }
}

0
nmap -sP 192.168.1.0/24|grep SEARCHED_HOSTNAME|sed -n 's/.*[(]\([0-9\.]*\)[)].*/\1/p'

ডিএনএসের কোন জিজ্ঞাসা নেই


যদিও এটি প্রকৃতপক্ষে প্রশ্নের জবাব দিতে পারে এটি কীভাবে এবং কেন এটি করে তা ব্যাখ্যা করা ভাল। এটি কি করছে সে সম্পর্কে সামান্য বা কোনও ব্যাখ্যা সহ একটি কমান্ড লাইন ভবিষ্যতের দর্শকদের যারা একই ধরণের সমস্যা সমাধানের প্রয়োজন হতে পারে তাদের সহায়তা নাও করতে পারে।
মকুবাই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.