হোস্ট অনুসন্ধান যা / ইত্যাদি / হোস্টকে সম্মান করে


19

ইউটিলিটিগুলি পছন্দ করে hostএবং digআপনাকে হোস্ট নামের সাথে সম্পর্কিত আইপি ঠিকানাটি দেখতে দেয়।

এছাড়াও getentইউটিলিটি রয়েছে যা ক্যোয়ারী /etc/hostsবা অন্যান্য এনএসএস ডাটাবেসগুলিতে ব্যবহার করা যেতে পারে ।

আমি একটি সুবিধাজনক স্ট্যান্ডার্ড ইউটিলিটি (যা দেবিয়ান উপলভ্য, বলুন) সন্ধান করছি যা কোনও হোস্টের নাম যেখানেই সংজ্ঞায়িত হোক না কেন সমাধান করে।

এটি কমবেশি সমান হতে হবে

ping "$HOST" | head -1 | perl -lne '/\((.*?)\)/ && print $1'

5
এর সাথে ঠিক কী ভুল হয়েছে getent?
প্যাট্রিক

2
হ্যাঁ, আমি জেনেটের চেয়ে এটি আরও সুবিধাজনক পেতে পারে এমন কিছু করি না।
ব্র্যাচলে

@ পেট্রিক: হুম, আমি বুঝতে পারি নি getentযে এটি ডিএনএস-এও দেখায় (আমি ভেবেছিলাম এটি কেবল ভিতরে রয়েছে /etc/hosts)। এখন যেহেতু আমি এটি চেষ্টা করেছি, এখানে কী ঘটছে তা এখানে getent: কারণ google.comএটি একটি একক ঠিকানা দেয় এবং সেই ঠিকানাটি IPv6। যা সহায়ক নয়, যেহেতু আমি একটি আইপিভি 4 নেটওয়ার্কে আছি, এবং আমার কমান্ডটি আসলে একটি আইপিভি 4 ঠিকানা মুদ্রণ করবে।
রোমান চ্যাপলিয়াকা

@RomanCheplyaka - দেখুন eppesuig এর উত্তর যে দেখায় কিভাবে getent শুধুমাত্র বর্ণন করার জন্য IPv4 ঠিকানার জন্য ব্যবহার করার জন্য: unix.stackexchange.com/a/71392/7453
SLM

উত্তর:


4

আমি সচেতন যে একমাত্র আদেশ যা আপনি যা চান তা হ'ল সমাধান:

http://linux.die.net/man/1/resolveip

তবে এটি কেবল মাইএসকিএল-সার্ভারের সাথে আসে যা সর্বত্র ইনস্টল করার জন্য আদর্শ নাও হতে পারে।


14

যদি সমস্যাটি হয় আপনি ipv6 ব্যবহার করে এই নামগুলি সমাধান করতে চান না, তবে কেবলমাত্র আইপিভি 4 ব্যবহারের জন্য জিেন্টকে জিজ্ঞাসা করুন। এটি সমস্ত আইপিভি 4 ঠিকানা গণনা করবে:

giuseppe@blatta:~$ getent ahostsv4 www.google.com | cut -d' ' -f1 | sort -u
173.194.40.80
173.194.40.81
173.194.40.82
173.194.40.83
173.194.40.84

যারা ইতিহাস ভুলে যাওয়ার যত্ন নেন (অর্থাত্ আইভিভি 4), ব্যবহার করুন ahostsv6
লুক

2
যারা IPv4 এবং IPv6 এর মধ্যে পার্থক্য বিবেচনা এড়াতে চান, তাদের জন্য ব্যবহার করুন getent ahosts google.com
মিক্কো রেন্টালাইনেন

6

জিনিস ভালো সমাধান হোস্ট নামের বিভিন্ন API গুলি আছে হয় gethostbyname, getaddrinfoএবং inet_ptonসেই কিছু একাধিক ঠিকানায় ফিরে যান এবং / অথবা আপনি ঠিকানাটি ধরণ যদি আপনি চান খোঁজ করতে পারেন করতে পারেন।

আপনি পেতে পোর্টেবল উপায় চান এক IPv4 ঠিকানা, তারপর হয়ত:

perl -MSocket -le 'print inet_ntoa inet_aton shift' www.google.com

2

(আপনি যদি মেশিনে রুট করেন তবেই এই উত্তরটি প্রযোজ্য))

আমি এটির দ্বারাও বিরক্ত হতাম, এবং তারপরে আমি আমার সমস্ত মেশিনে ডিএনএসম্যাস্ক চালানোর জন্য মানক করেছিলাম। Dnsmasq একটি হালকা ডিএনএস ক্যাশে। পার্শ্ব সুবিধা হিসাবে এটি ডিএনএসের ওপরে সামগ্রী সরবরাহ /etc/hostsকরে।


2

gethostip -d name.domainsyslinuxউবুন্টু (এবং সম্ভবত ডেবিয়ান) এর প্যাকেজ থেকে । -dদশমিক বিন্যাস আউটপুট।


0

আমি আমার খাঁটি পার্ল জ্ঞান ব্যবহার করেছি এবং ত্রুটি পরিচালনার সাথে একটি ছোট স্ক্রিপ্ট তৈরি করেছি:

, / Usr / local / bin / gethostip:

#!/usr/bin/perl

# inspired by: /unix/71379/host-lookup-that-respects-etc-hosts#71393

use strict;
use Socket;

my $name = $ARGV[0];
if ($name eq '') {
  print STDERR "Usage: gethostip <hostname>\n";
  exit 1;
}
my $ip = inet_aton($name);
die("Unable to resolve host name $name") if ($ip eq '');
my $ipstr = inet_ntoa($ip);
print "$ipstr\n";

প্রাথমিক ধারণাটির জন্য থেক্স থেকে স্টাফেন চেজেলাস

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