मैं IPv6 आधारित लूपबैक के लिए :: 1 के साथ कर्ल का उपयोग कैसे कर सकता हूं?


29

मैंने कुछ तरीके आजमाए लेकिन वे भ्रामक लगते हैं।

root@testt:~# curl localhost:8080
<h1>Hello world!</h1>

<p>Boom Bam Splat</p>
root@testt:~# curl ::1:8080
curl: (3) IPv6 numerical address used in URL without brackets
root@testt:~# curl [::1]:8080
curl: (3) [globbing] bad range specification in column 2

1
मुझे पता है कि आपने एक उत्तर का चयन किया है, लेकिन चूंकि यहां दो उत्तरों के बीच समानताएं हैं, क्या आप कृपया स्पष्ट कर सकते हैं कि आपके लिए कौन सी विशिष्ट कमांड काम की है?
जेकगोल्ड

1
पहले जवाब देने के लिए धन्यवाद! मैं वास्तव में कठिन था, जिसके लिए उन्हें स्वीकार करना था क्योंकि वे दोनों इतने संक्षिप्त और महत्वपूर्ण नहीं थे, हालांकि मैंने दूसरे को चुना क्योंकि उपयोगकर्ता केवल आपकी तुलना में शुरुआत कर रहा है और पहले उत्तर दिया है। बावजूद, सिर्फ - जी विकल्प का उपयोग करना पर्याप्त था।
हॉक 8

जवाबों:


45

इस ब्लॉग पोस्ट पर आम त्रुटियों के सुझावों और टूटने को देखते हुए , शायद आपको यह कोशिश करनी चाहिए।

curl -g -6 "http://[::1]:8080/" 

-gइस काम के प्राप्त करने के लिए जादुई कुंजी हो रहा है। जैसा कि curlमैन पेज पर समझाया गया है :

यह विकल्प "URL ग्लोबिंग पार्सर" को बंद कर देता है। जब आप इस विकल्प को सेट करते हैं, तो आप उन URL को निर्दिष्ट कर सकते हैं जिनमें {} [] अक्षर होते हैं, जिनकी व्याख्या किए बिना उन्हें कर्ल द्वारा ही व्याख्यायित किया जाता है। ध्यान दें कि ये पत्र सामान्य कानूनी URL सामग्री नहीं हैं, लेकिन उन्हें URI मानक के अनुसार एन्कोड किया जाना चाहिए।

और -6केवल IPv6 का उपयोग करने का साधन:

यदि libcurl कई IP संस्करणों के पते को हल करने में सक्षम है (जो कि अगर यह IPv6- सक्षम है), तो यह विकल्प libcurl को केवल IPv6 पते के नाम हल करने के लिए कहता है।

लेकिन उस कार्यक्षमता विवरण को पढ़ते हुए, ऐसा लगता -6है कि वास्तव में शुद्ध IPv6 पते की आवश्यकता नहीं है; केवल अगर कोई curlएक होस्टनाम पर उपयोग कर रहा है जिसमें एक आईपीवी 4 और आईपीवी 6 पता जुड़ा हुआ है तो वह आईपीवी 6 पसंद करेगा। बस कुछ ध्यान देना है।


OSX 10.13.3: यह काम करता है: $ curl "http://localhost:50710/file1.txt"और यह $ curl -g -6 "http://[::1]:50710/file1.txt" कर्ल नहीं करता है : (7) :: 1 पोर्ट 50710 से कनेक्ट करने में विफल: कनेक्शन ने इनकार कर दिया । और एक सुविधा के रूप में $ curl -Vदिखाता है IPv6(कर्ल 7.58.0)। मेरी /etc/hostsफ़ाइल सूची:::1 localhost
7stud

अरे, मेरे सर्वर के बारे में टिप के लिए धन्यवाद! अब, मुझे अपना सर्वर ipv6 एड्रेस से मिला है:, 0.0.0.0.0.0.0.1मैं बस कर सकता हूं curl "http://[::1]:50710/file1.txt"। अगर मैं -vवर्बोज़ आउटपुट के लिए एक विकल्प जोड़ता हूं , तो मैं आउटपुट में देखता हूं: # 1 कोशिश कर रहा हूं: * TCP_NODELAY सेट * कनेक्टेड टू :: 1 (:: 1) पोर्ट 52489 (# 0) - किसी कारण से, मैंने किया नहीं ' -gविकल्प की जरूरत नहीं है ।
7stud

अधिक जानकारी: IPv6 होस्ट के लिए बाध्य मेरे सर्वर के साथ, मैं अभी भी कर्ल के साथ एक ipv4 अनुरोध प्राप्त कर सकता हूं curl -v "http://localhost:52489/file1.txt":। आउटपुट में मैं देख रहा हूँ: ट्राई कर रहा हूँ :: 1 ... * TCP_NODELAY सेट * कनेक्टेड टू लोकलहोस्ट (# 1) पोर्ट 52489 (# 0) - आह, मुझे लगता है कि क्योंकि मेरी /etc/hostsफाइल "लोकलहोस्ट" नाम दोनों को हल करती है ipv4 और ipv6 पता। और अगर मैं कोशिश करता हूं: curl -v "http://127.0.0.1:52489/file1.txt"तो मुझे कनेक्शन से इनकार कर दिया गया त्रुटि।
7stud

1
@ 7stud "अब, कि मैंने अपना सर्वर ipv6 एड्रेस से बंधवा लिया है: 0.0.0.0.0.0.0.1"। आपको गंभीरता से पता नहीं है कि आप किस बारे में बात कर रहे हैं। मेरा सुझाव है कि इन टिप्पणियों में आप सभी को समझाते हुए एक नया प्रश्न लिखें और देखें कि क्या कोई आपकी मदद कर सकता है। यदि आप चाहें तो इस उत्तर को देखें। लेकिन अगर आपको लगता 0.0.0.0.0.0.0.1है कि एक वैध आईपीवी 6 पता है तो आप पहले से ही खराब स्थिति में हैं।
जेकगॉल्ड

8

"कर्ल - मैनुअल" से, मुझे यह मिला:

curl -g "http://[2001:1890:1112:1::20]/"

या

curl "http://[2001:1890:1112:1::20]/"

तो, जिस पते के बारे में आप पूछ रहे हैं, उसके लिए प्रयास करें:

curl -g "http://[::1]:8080/"

हालाँकि, आप चलाना चाहते हैं:

curl -V

और देखें कि क्या IPv6 उस लाइन पर दिखाता है जो "फीचर्स" कहती है (तीसरी लाइन, वर्ड रैपिंग से एक्स्ट्रा लाइन नहीं गिनना)। मैंने पाया कि मेरा संस्करण नहीं था। Microsoft Windows के लिए कर्ल 7.41.0 डाउनलोड साइट (जो वर्तमान में नवीनतम संस्करण है) सहित ऑपरेटिंग सिस्टम के लिए cURL डाउनलोड पेज के विभिन्न लिंक हैं । उस पृष्ठ में कई निष्पादनयोग्य हैं (Microsoft Windows के लिए उपलब्ध); पहले मैंने पाया कि IPv6 का समर्थन नहीं किया। लेकिन दोनों को "ipv6-sspi-spnego-winsl" (x86 के लिए एक और x64 के लिए एक) के रूप में वर्णित किया गया: कर्ल -V ने IPv6 दिखाया। इसलिए सावधान रहें कि आप कौन सा पैकेज डाउनलोड करते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.