ম্যাক ওএস এক্স ইয়োসেমাইটে স্থানীয় হোস্টের নাম কার্ল করুন


30

আমি স্রেফ ম্যাভারিকস থেকে ইয়োসেমাইটে আপগ্রেড করেছি এবং এখন curlলুপব্যাক হোস্টের নাম দেখতে পাচ্ছি না।

পরীক্ষা করার জন্য একটি সাধারণ HTTP সার্ভার সেট আপ করুন:

$ python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...

এখন আমি লোকালহোস্ট হিট করতে পারি: ক্রোমে 8000 আমি এমনকি এটি wget করতে পারেন। তবে কার্ল মধ্যে, এটি ঘটে:

$ curl localhost:8000
curl: (7) Failed to connect to localhost port 8000: Connection refused

তবে, এটি কাজ করে:

$ curl 127.0.0.1:8000

আমি উইজেট প্রক্সি সেটিংস সম্পর্কে এই উত্তরটি পড়েছি , তবে এটি কোনও লাভ হয়নি, কারণ এটি কাজ করে:

$ wget --proxy=off localhost:8000

এটি সত্যিই হতাশাবোধক, কারণ আমার /etc/hostsফাইলে আমার কয়েকটি আলাদা লুপব্যাক হোস্টনাম তালিকাভুক্ত রয়েছে যাতে আমি স্থানীয়ভাবে অ্যাপ্লিকেশন বিকাশ করতে পারি এবং আমি সেগুলি কার্ল দিয়ে ডিবাগ করতে অভ্যস্ত।

আমি কার্লের সংস্করণটি চেষ্টা করেছি যা ওক্স সহ জাহাজগুলি:

$ curl --version
curl 7.37.1 (x86_64-apple-darwin14.0) libcurl/7.37.1 SecureTransport zlib/1.2.5
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp
Features: AsynchDNS GSS-Negotiate IPv6 Largefile NTLM NTLM_WB SSL libz

$ curl localhost:8000
curl: (7) Failed to connect to localhost port 8000: Connection refused

$ curl 127.0.0.1 # works

এবং আমি ব্রিউ দিয়ে কার্ল সংকলনের চেষ্টা করেছি:

$ /usr/local/Cellar/curl/7.38.0/bin/curl --version
curl 7.38.0 (x86_64-apple-darwin14.0.0) libcurl/7.38.0 SecureTransport zlib/1.2.5
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp
Features: IPv6 Largefile NTLM NTLM_WB SSL libz

$ /usr/local/Cellar/curl/7.38.0/bin/curl localhost:8000
curl: (7) Failed to connect to localhost port 8000: Connection refused

$ /usr/local/Cellar/curl/7.38.0/bin/curl 127.0.0.1:8000 # works

আমি একটি নোড.জেএস অ্যাপ্লিকেশন পরীক্ষার অনুরূপ সমস্যার মধ্যে দৌড়েছি। আমি নোডের ডিবাগিংটি দেখেছি যে এটি ০.০.০.০-এ বাধ্যতামূলক এবং 'কার্ল -4 লোকালহোস্ট ...' চেষ্টা করেছে এবং এটি কাজ করেছে, কিন্তু -4 ছাড়া এটি ব্যর্থ হয়েছে। এটি IPv6 ঠিকানা IPv4 ঠিকানার আগে / etc / হোস্টের বাইরে সমাধান করা হচ্ছে বলে মনে হয়।
নেথ

আপনি নিককে বর্ণনা করেছেন একই সমস্যা আমি করছি।
নার্ডবার্ন

উত্তর:


36

আমি আমার / ইত্যাদি / হোস্ট ফাইল থেকে আইপিভি 6 লুপব্যাক লাইনগুলির মধ্যে একটিতে মন্তব্য করে এটি কাজ করতে পেরেছি:

#fe80::1%lo0    localhost

এখন আমার সমস্ত লুপব্যাক হোস্টনামগুলি কেবল লোকালহোস্ট নয় work আমি ভাবছি এই কি হচ্ছে?


আমার তা ছিল এবং এটি আমাকেও সহায়তা করেছিল। আমি জানি না যে এই লাইনটির সাথে কী চুক্তি হয়েছে; এটি দেখে মনে হয় আমার সিস্টেমটি ইয়োসেমাইটের আগে থেকেই ছিল।
4:44

তোমাকে অনেক ধন্যবাদ. আমি ভাবছি যদিও, কেন মূলত এটি আইপিভি 4 এর উপর লুপব্যাক ডিভাইসের জন্য আইপিভি 6 এর পক্ষে? এটি কেবল আমার জন্য ইয়োসেমাইটে ঘটতে শুরু করে।
lukecampbell

24

বিকল্প (সুডো বা সংশোধন করার প্রয়োজন হয় না /etc/hosts) - কার্ল চতুর না হওয়া পর্যন্ত সর্বদা আইপিভি 4 ব্যবহার করুন।

$ echo '--ipv4' >> ~/.curlrc

(তারপরে সবকিছু পছন্দসই হিসাবে কাজ করবে)


ধন্যবাদ - এই সমস্যাটি আমাকে বাদাম চালাচ্ছিল তবে আপনার সমাধানটি পুরোপুরি কার্যকর হয়েছিল।
কাইল ফক্স

2

প্রথমত, 0.0.0.0একটি বিশেষ ঠিকানা যার অর্থ "কোনও আইপিভি 4 ঠিকানা"।

একটি সকেট আইপিভি 4 বা আইপিভি 6 প্রোটোকলের সাথে আবদ্ধ হতে পারে। যদি কোনও সকেটে আবদ্ধ থাকে 0.0.0.0, এর অর্থ এটি যে কোনও আইপিভি 4 এটির সাথে সংযোগ স্থাপনের চেষ্টা করছে শুনবে এবং নীচে যেমন উপস্থাপিত হবে:

$ nc -l 0.0.0.0 8085
$ lsof -i4 -Pnl | grep 8085
  nc        23994 [xxx]    3u  IPv4 [xxx]      0t0  TCP *:8085 (LISTEN)

*সাইন সমতূল্য 0.0.0.0IPv4- র উপর।

আইপিভি 6 এর জন্য:

$ nc -l :: 8085
$ lsof -i6 -Pnl | grep 8085
  nc        24145 [xxx]    3u  IPv6 [xxx]      0t0  TCP *:8085 (LISTEN)

*সাইন সমতূল্য ::, IPv6 এর উপরে সরকারী স্পেসিফিকেশন হিসেবে

কারণ যে curlএকটি র্যান্ডম করার সমাধান করতে চেষ্টা localhostমধ্যে এন্ট্রি /etc/hosts, এবং @NickRetallack উল্লেখ করা হয়েছে, যে এন্ট্রি মনোনীত এক হয় curlযখন সমাধানে localhostতার ডিফল্ট মোড (assumedly IPv6, বা IPv4- র যাই হোক না কেন প্রথম সমাধান করা) এ।

এটা অত্যাচার --ipv4মোড, যেমন @CharlesHebdough প্রস্তাব, করতে হবে curlসমাধানে localhostকরতে 127.0.0.1(অভিমানী সেখানে অন্য কোন IPv4- র এন্ট্রি localhostমধ্যে /etc/hosts)।

প্রতিটি বাস্তবায়ন তাদের ইচ্ছামতো সমাধান করবে localhost, সুতরাং কেন আপনি বিভিন্ন সরঞ্জামের সাথে অন্তর্বতী সাফল্য অর্জন করেছেন।

সর্বাধিক সুনির্দিষ্ট 127.0.0.1হওয়ার জন্য, লোকালহোস্টের পরিবর্তে ব্যবহার করুন তবে এটি আপনাকে আইপিভি 4-তে আবদ্ধ করবে। localhostআপনাকে আইপিভি 6 এবং আইপিভি 4 প্রোটোকল উভয় ক্ষেত্রেই কাজ করার নমনীয়তা দেয়, তবে কিছু বাস্তবায়নে আপনার সমস্যা হতে পারে, যেমনটির নির্দিষ্ট সংস্করণে curl

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