Curv'ı :: 1 ile ipv6 tabanlı geridönüşüm için nasıl kullanabilirim?


29

Birkaç yol denedim ama kafa kıvrılması karıştı.

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
Bir cevap seçtiğinizi biliyorum, ancak buradaki iki cevap arasında benzerlikler olduğu için, sizin için hangi komutun işe yaradığını açıklayabilir misiniz?
JakeGould

1
Cevapları daha önce verdiğiniz için teşekkür ederiz! Hem çok özlü hem de özlü oldukları için kabul etmeleri için gerçekten çok zorlandım, ancak diğerini seçtim, çünkü o kullanıcı seninle daha yeni başlıyor ve ilk önce cevapladı. Ne olursa olsun, sadece - g seçeneğini kullanmak yeterliydi.
hak8or

Yanıtlar:


45

Bu blog gönderisinde önerilere - ve genel hataların dökümüne - bakarak , belki de bunu denemelisiniz.

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

-gBu çalışma almak büyülü anahtar gibi görünüyor. curlMan sayfasında açıklandığı gibi :

Bu seçenek "URL globbing ayrıştırıcısı" nı kapatır. Bu seçeneği ayarladığınızda, {} [] harflerini içeren URL'leri, curl tarafından yorumlanmadan belirtebilirsiniz. Bu harflerin normal yasal URL içeriği olmadığını, ancak URI standardına göre kodlanmaları gerektiğini unutmayın.

Ve -6sadece IPv6 kullanmanın araçları:

Libcurl bir adresi birden fazla IP sürümüne çözümleyebiliyorsa (IPv6 özelliğine sahipse), bu seçenek libcurl'a yalnızca IPv6 adreslerine ad çözmesini söyler.

Ancak bu işlevsellik tanımını okuduğunuzda, -6saf bir IPv6 adresi için gerçekten gerekli olmadığı anlaşılıyor ; yalnızca biri kendisine curlbağlı bir IPv4 ve IPv6 adresi olan bir ana bilgisayar adı kullanıyorsa , IPv6'yı tercih eder. Sadece not edilecek bir şey.


OSX 10.13.3: Bu çalışır: $ curl "http://localhost:50710/file1.txt"ve bu $ curl -g -6 "http://[::1]:50710/file1.txt" kıvrılmaz: (7) :: 1 bağlantı noktası 50710'a bağlanılamadı: Bağlantı reddedildi . Ve bir özellik olarak $ curl -Vgösterir IPv6(kıvrılma 7.58.0). Benim /etc/hostsdosya listeleri:::1 localhost
7stud

Sunucumla ilgili ipucu için teşekkürler! Artık sunucumu ipv6 adresine bağladım: 0.0.0.0.0.0.0.1basitçe yapabilirim curl "http://[::1]:50710/file1.txt". -vAyrıntılı çıktı için bir seçenek eklersem , çıktıda görürüm: Trying :: 1 ... * TCP_NODELAY set * Connected :: 1 (:: 1) port 52489 (# 0) - Bir nedenden dolayı yaptım -gseçeneğe ihtiyacım yok .
7

Daha fazla bilgi: Sunucum bir ipv6 ana bilgisayarına bağlıyken, hala bir ipv4 curl: isteği alabilirim curl -v "http://localhost:52489/file1.txt". Çıktıda görüyorum: Trying :: 1 ... * TCP_NODELAY set * localhost ile bağlandı (:: 1) port 52489 (# 0) - Ah, sanırım benim dosyam/etc/hosts "localhost" adını her ikisine de çözüyor. ipv4 ve ipv6 adresi. Ve eğer denersem: curl -v "http://127.0.0.1:52489/file1.txt"bağlantı reddedildi hatası alıyorum.
7

1
@ 7stud “Şimdi, sunucumu ipv6 adresine bağladım: 0.0.0.0.0.0.0.1”. Ne hakkında konuştuğunuz hakkında hiçbir fikriniz yok. Bu yorumlarda açıkladığınız her şeyi açıklayan yeni bir soru yazmanızı ve birisinin size yardım edip edemeyeceğini görmek istiyorum. İsterseniz bu cevaba bakınız. Ancak 0.0.0.0.0.0.0.1geçerli bir IPv6 adresi olduğunu düşünüyorsanız , zaten fena durumdasınız.
JakeGould

8

"Curl --manual" den şunu buldum:

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

veya

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

Yani, sorduğunuz adres için şunu deneyin:

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

Ancak, çalıştırmak isteyebilirsiniz:

curl -V

ve IPv6'nın "Özellikler" yazan satırda görünüp görünmediğine bakın (üçüncü satır, sözcük kaydırma işleminden fazladan satır sayma). Versiyonumun olmadığını buldum. cURL indirme sayfasında , işletim sistemleri için, Microsoft Windows için 7.41.0 indirme sitesi (şu anda en son sürümdür) dahil olmak üzere çeşitli bağlantılar bulunur . Bu sayfada birden fazla çalıştırılabilir dosya var (Microsoft Windows için kullanılabilir); ilk bulduğum IPv6'yı desteklemedi. Ancak "ipv6-sspi-spnego-winssl" (x86 için bir ve x64 için bir tane) olarak tanımlanan ikisi yaptı: curl -V, IPv6'yı gösterdi. Bu yüzden hangi paketi indirdiğinize dikkat edin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.