logo

Örneklerle Linux'ta Curl Komutu

Linux curl komutu, HTTP, FTP, IMAP, SFTP, TFTP, IMAP, POP3, SCP vb. gibi desteklenen protokoller aracılığıyla verileri bir sunucuya indirmek veya yüklemek için kullanılır. Uzak bir yardımcı programdır, dolayısıyla kullanıcı etkileşimi olmadan çalışır.

Verilerin bir yerden başka bir yere aktarılması bilgisayar sisteminin hayati ve en çok kullanılan görevlerinden biridir. Ancak veri aktarımı için pek çok GUI aracı mevcuttur. Ancak komut satırında çalışırken işler biraz karmaşık hale gelir. Curl yardımcı programı, verileri komut satırı aracılığıyla aktarmamıza olanak tanır.

Curl, URL sözdizimine sahip dosyalar gibi verileri almak ve göndermek için kullanılan bir komut satırı aracıdır. Libcurl kullandığı için libcurl tarafından desteklenen tüm protokolleri destekler. Curl, HTTPS desteğini sağlar ve varsayılan olarak HTTPS gibi güvenli bir protokol belirtildiğinde SSL sertifikası doğrulamasını uygular. Curl, uzak sunucu sertifikasını getirecek ve CA sertifikasını kontrol ederek, uzak sunucunun HTTPS ile uzak bir sunucuya bağlantı kurduğunda uzak sunucunun olmasını istediği sunucu olduğunu garanti etmekten uzak sunucu geçerliliğini koruyacaktır.

CA sertifikasını tanımlamak için birçok seçenek vardır; --capath Ve --cacert . --cacert seçeneği, CA sertifika deposundaki dosyanın konumunu belirtmek için kullanılabilir. Windows platformunda bir CA sertifika dosyası mevcut değilse curl, 'curl-ca-bundle.crt' CA sertifika dosyası adını aşağıdaki sırayla arayacaktır:

  • Curl programının bulunduğu dizin.
  • Geçerli çalışma dizini.
  • Sistem dizini (Windows).
  • Dizin (Windows).
  • Dizinler %PATH% ortam değişkenlerinde belirtilir.

Curl, uzak sunucu kendinden imzalı bir sertifika kullandığında veya uzak sunucu sertifikası CA sertifika dosyasında belirtilen bir CA aracılığıyla imzalanmadığında bir hata mesajı verecektir. Sertifika doğrulamasını atlamak için --insecure veya -k seçeneği kullanılabilir. Uzak sunucu geçerliyse, uzak CA sertifikası alternatif olarak CA sertifika deposu dosyasına eklenebilir.

Curl, dosya aktarımı özgeçmişi, çerezler, SSL bağlantıları, HTTP gönderimi, FTP yüklemesi, kullanıcı kimlik doğrulaması, proxy desteği ve daha fazlası gibi bir veriyolu dolusu yararlı püf noktası sağlar. Curl, transferle ilgili her husus için libcurl tarafından mekanize edilmiştir.

libcurl nedir?

libcurl, istemci tarafı ücretsiz bir URL aktarım kitaplığıdır. SMB, SMTP, SCP, RTMP, RTSP, POP3, MQTT, LDAP, Kerberos, IMAP, HTTPS, HTTP proxy tünelleme, HTTP PUT, HTTP POST, HTTP/1, Gopher, FTPS, FTP, DICT ve çerezleri destekler. Kitaplık ayrıca kullanıcı artı parola kimlik doğrulamasını, proxy'leri, LDAPS'yi, HTTPS sertifikalarını, HTTP form tabanlı yüklemeyi, FTP yüklemeyi, dosya aktarımını sürdürmeyi, TFTP, Telnet, SFTP ve dosya URL şemasını destekler.

libcurl kompakttır. Microsoft Windows, UnixWare, Ultrix, Tru64, Symbian, Solaris, RISC OS, QNX Neutrino, OS/2, OpenBSD, NetWare, NetBSD, macOS, Linux, IRIX, iOS, HURD, HP dahil olmak üzere çeşitli platformlarda aynı şekilde oluşturur ve çalışır. -UX, FreeBSD, DOS, Darwin, OpenVMS, BlackBerry 10, BlackBerry Tablet İşletim Sistemi, BeOS, Android, AmigaOS ve AIX.

Libcurl kütüphanesi IPv6 uyumlu, iş parçacığı açısından güvenli ve ücretsizdir. Bağlamalar ayrıca Python, PHP, Java ve C/C++ dahil 50'den fazla dil için de mevcuttur.
Libcurl kitaplığı SChannel, IBM i üzerinde gskit, NSS, mbed TLS, Windows üzerinde GnuTLS, iOS ve macOS üzerinde Secure Trasport, OpenSSL aracılığıyla TLS/SSL, Russls, BearSSL, wolfSSL, AmiSSL, liressl ve Boringssl'yi destekler.

Sözdizimi:

Curl'ü kullanmanın temel sözdizimi aşağıdaki gibidir:

 curl [options] [URL...] 

Yukarıdaki sözdiziminden,

URL'si:

URL sözdizimi genel protokole bağlı bir URL'dir. Birden fazla URL'yi aşağıdaki gibi belirtebiliriz:

 http://site.{one,two,three}.com 

Seçenekler:

curl komutu aşağıdaki komut satırı seçeneklerini destekler:

--abstract-unix-soket: Bir ağ yerine soyut Unix etki alanı soketi aracılığıyla bağlanmak için kullanılır.

--anyauth: En güvenli yöntemin kullanılması amacıyla yöntemin kimliğinin doğrulanması amacıyla curl komutu vermek için kullanılır. Bu yardımcı program, belirli bir kimlik doğrulama yöntemini ayarlamak için kullanılan isteğe bağlı bir '--basic, --digest, --ntlm ve müzakere' yardımcı programıdır.

-a, --append: Dosya yüklemek için kullanılır. Dosyanın üzerine yazmak yerine ekler. Verilen dosya sunucuda mevcut değilse bir tane oluşturacaktır.

int'yi c++ dizisine dönüştür

--temel: HTTP temel kimlik doğrulamasının kullanımını belirtir. Curl komutunun varsayılan seçeneğidir. Önceki ayarları geçersiz kılmak için kullanışlıdır.

--cacert: Eşi doğrulamak için belirli bir sertifika dosyasının kullanılması için belirtilmiştir. Dosyalarda birden fazla CA sertifikası bulunabilir. Sertifikaların standart formatı PEM'dir, dolayısıyla tüm sertifikaların bu formatta olması gerekir.

--capath: Eşi doğrulamak için belirli bir dizini kullanmak üzere belirtilmiştir. Birden fazla yolu, 'yol: yol2:yol3' gibi iki nokta üst üste (:) ile ayırarak belirtebiliriz. Sertifikaların standart formatı PEM'dir, dolayısıyla tüm sertifikaların bu formatta olması gerekir.

--sertifika durumu: Sunucu sertifikasının durumunu doğrulamak için kullanılır. Sertifika Durum İsteği veya OCSP zımbalama TLS'yi kullanır.

--sertifika türü: Sağlanan curl sertifika tipini belirtir. Bu sertifikalar PEM, DER ve ENG formatında olabilir. Varsayılan değer PEM'dir. Birden çok kez belirtilirse son değer curl tarafından alınacaktır.

-E, --cert : HTTPS, FTPS vb. gibi herhangi bir SSL tabanlı protokol aracılığıyla bir dosya alırken istemci sertifika dosyasının kullanılması için belirtilir.

--şifreler: Bağlantıda kullanılacak şifreleri seçmek için kullanılır.

--sıkıştırılmış-ssh: Yerleşik SSH sıkıştırmasını etkinleştirmek için kullanılır. Bu seçenek sunucu tarafından bir istek olarak alınacaktır, dolayısıyla sunucu bunu kabul edebilir veya etmeyebilir.

--sıkıştırılmış: Kıvrılma algoritmalarını kullanarak sıkıştırılmış bir yanıt istemek için kullanılır ve sıkıştırılmamış belgeyi kaydeder. Bu seçenek, desteklenmeyen kodlama kıvrılması için bir rapor gönderecektir.

-K, --config : Curl argümanlarını okumak için bir metin dosyasını tanımlamak için kullanılır. Kıvrılma, metin dosyasındaki komut satırı bağımsız değişkenlerini kullanacaktır.

--Bağlantı zaman aşımı : Curl bağlantı zaman aşımı için maksimum süreyi saniye cinsinden belirtmek için kullanılır.

--bağlanmak : Verilen ana bilgisayar ve bağlantı noktası çiftine bir istek oluşturmak için kullanılır; aksi halde bir sonraki çifte bağlanacaktır. Bu seçenek, belirli bir sunucuda doğrudan istekte bulunmak için kullanışlı bir araçtır.

-C, --devam-at : Verilen ofset seviyesinde önceki bir dosya aktarımına devam etmek veya devam ettirmek için kullanılır.

-c, --cookie-jar : Başarılı bir işlemden sonra tüm çerezleri yazmak istediğimiz belirli bir dosyayı belirtmek için kullanılır.

-b, --cookie : Cookie başlığındaki verileri HTTP sunucusuna iletmek için kullanılır.

--create-dirs: '-o?' ile birlikte kullanılır. seçeneği, gerekli yerel dizin hiyerarşisini oluşturacaktır.

--crlf (FTP SMTP): Yüklemede LF'yi CRLF'ye dönüştürmek için kullanılır. MVS (OS/390) için kullanışlı bir araçtır.

--crl dosyası: Sertifika İptal Listesi ile (PEM formatında) belirtmek için kullanılır.

--data-ascii: ?-d? için bir takma addır. seçenek.

--delegasyon: Kullanıcı kimlik bilgileri söz konusu olduğunda sunucuya neyi devretmesine izin verildiğini onaylamak için LEVEL'i ayarlamak için kullanılır.

--sindirmek: HTTP Digest kimlik doğrulamasını etkinleştirmek için kullanılır.

-q, --devre dışı bırak: İlk argüman olarak kullanılırsa curlrc yapılandırma dosyasını yok sayar.

--dns arayüzü: Sunucunun giden DNS isteklerini göndermesini onaylamak için kullanılır.

--dns-sunucuları: Varsayılan sunucular yerine DNS sunucularını belirtmek için kullanılır.

-f, --fail: Sunucu hatalarında kıvrılmanın sessizce başarısız olmasını sağlamak için kullanılır.

-F, --form : Kullanıcı tarafından doldurulmuş bir formun taklit edilmesi için kullanılır.

-P, --ftp-bağlantı noktası: FTP ile bağlanırken varsayılan dinleyici rollerini tersine çevirmek için kullanılır.

--ftp-ssl-ccc-modu: CCC modunu ayarlamak için kullanılır.

-G, --get: Verileri ?-d? ile belirtmek için kullanılır. POST isteği yerine HTTP GET isteğinde kullanılacak seçenek.

-h, --yardım: Kullanım ve destek seçeneklerinin kısa bir açıklamasını içeren yardım kılavuzunu göstermek için kullanılır.

-0, --http1.0: HTTP sürüm 1.0'ı kullanmak için belirtilmiştir.

--ignore-içerik-uzunluğu: Content-Length başlığını yok saymak için kullanılır.

-dahil ediyorum: HTTP yanıt başlıklarını dahil etmek için kullanılır.

-4, --ipv4: İsimleri IPv4 adreslerine çözümlemek için kullanılır.

-6, --ipv6: İsimleri IPv6 adreslerine çözümlemek için kullanılır.

Kıvrılma protokolleri

Curl çeşitli protokolleri destekler:

    DICT:Sadece sözlüklerle kelimeleri aramamızı sağlar.FTP (S):Curl, birçok kaldıraç ve ayar kullanarak FTP protokolünü destekler. TLS'li veya TLS'siz.DOSYA:Yerel dosyayı yazmamızı ve okumamızı sağlar. Curl, file://URL'ye uzaktan erişime izin vermez, ancak Microsoft Windows'ta etkin olduğunda yerel UNC yaklaşımıyla çalışacaktır.GOPHER (S):Dosyaları geri getirir.HTTP (S):Curl, çok sayıda varyasyon ve seçenek kullanarak HTTP'yi destekler. Doğru komut satırına ve derleme seçeneklerine bağlı olarak 0.9, 1.0, 1.1, 2 ve 3 HTTP sürümlerini konuşabilir.IMAP (S):Curl, e-posta okuma protokolüyle bizim için e-postaları indirir. TLS'li veya TLS'siz.LDAP'ler (S):Curl, TLS kullanarak veya kullanmadan bizim için dizin aramayı uygulayabilir.MQTT:Curl, MQTT'nin 3 sürümünü destekler. MQTT'de indirme işlemi aynı 'abone' herhangi bir konuya ve gönderme/yükleme ile aynıdır 'Yayınla' herhangi bir konuda. TLS üzerinden MQTT desteklenmez.POP3 (S):Bir pop3 sunucusu üzerinden indirme, TLS olmadan veya TLS ile posta almayı temsil eder.RTMP (S):RTMP veya Gerçek Zamanlı Mesajlaşma Protokolü esas olarak sunucu akış ortamı için kullanılır.RTSP:Curl, RTSP'nin 1.0 indirmesini destekler.SCP:Curl, SCP'nin iki scp aktarım sürümünü destekler.SFTP:Curl, SSH'nin 2 sürümü üzerinden SFTP'yi destekler.KOBİ (K):Curl, indirme ve yükleme için SMB'nin 1 sürümünü destekler.SMTP (S):İçeriğin herhangi bir SMTP sunucusuna yüklenmesi, bir e-postanın TLS olmadan veya TLS ile aktarılması anlamına gelir.TELNET:Curl'e bir telnet URL'si getirmesi yönünde bilgi verilmesi, okuduğunu stdin üzerinden aktardığı ve sunucunun aktardığının sonucunu verdiği etkileşimli bir oturum başlatır.TFTP:Curl, TFTP yüklemelerini ve indirmelerini uygulayabilir.

curl Komutunun Kurulumu

Curl komutu çoğu komutla birlikte gelir. Linux dağıtımlar. Ancak sistem varsayılan olarak curl'u taşımıyorsa. Manuel olarak yüklemeniz gerekiyor. Curl'ü yüklemek için aşağıdaki komutları yürütün:

Aşağıdaki komutları yürüterek sistemi güncelleyin:

 sudo apt update sudo apt upgrade 

Şimdi aşağıdaki komutu çalıştırarak curl yardımcı programını yükleyin:

 sudo apt install curl 

Aşağıdaki komutu yürüterek kurulumu doğrulayın:

 curl -version 

Yukarıdaki komut, curl komutunun kurulu sürümünü gösterecektir.

Belirtilen URL'nin içeriğini getir

Belirli bir URL'nin içeriğini getirmek için curl komutunu ve ardından URL'yi yürütün. Aşağıdaki komutu göz önünde bulundurun:

 curl https://www.javatpoint.com/linux-tutorial 

Yukarıdaki komut belirtilen sayfanın sayfa verilerini getirecektir. Çıktının aşağıdaki ekini göz önünde bulundurun:

Linux Kıvırma Komutu

Yukarıdaki çıktıdan, verilen URL'nin sayfa verilerinin getirildiğini görebiliriz. Yürütmeyi durdurmak için CTRL+C tuşlarına basın.

Verileri Belirli Bir Dosyaya Kaydetme

Verileri belirli bir dosyaya kaydetmek için '-o' seçeneğini ve ardından dizin, dosya adı ve URL'yi aşağıdaki gibi iletin:

 curl -o / 

Aşağıdaki komutu göz önünde bulundurun:

 curl -o /home/javatpoint/Documents/linux.html https://www.javatpoint.com/linux-tutorial 

Yukarıdaki komut, sayfa verilerini ' /home/javatpoint/Documents/' dizini altındaki 'linux.html' dosyasına kaydedecektir. Aşağıdaki çıktıyı göz önünde bulundurun:

Linux Kıvırma Komutu

Yukarıdaki komuttan indirilen toplam veri miktarını, alınan veriyi, ortalama süreyi ve verilere ilişkin diğer bazı istatistikleri görebiliriz.

İndirilen verileri doğrulamak için cat komutunu çalıştırarak dosyayı açın.

 cd Documents cat linux.html 

Aşağıdaki çıktı ekini göz önünde bulundurun:

Linux Kıvırma Komutu

Web'den Dosya İndirme

Curl'ün ilginç ve büyüleyici kullanımlarından biri de web'den dosya indirebilmemizdir. Web'den bir dosya indirmek için indirme bağlantısını kopyalayın ve curl komutuyla yapıştırın. Daha spesifik hale getirmek için başka argümanları da aktarabiliriz. Örneğin, ubuntu'nun en son sürümünü indirin, kopyalayın. İndirme: {link ubuntu'yu resmi web sitesinden indirin ve aşağıdaki gibi curl komutuyla yapıştırın:

 curl -o /home/javatpoint/Documents/ubuntu20.04.iso https://ubuntu.com/download/desktop/thank-you?version=20.04&architecture=amd64 

Yukarıdaki komut Ubuntu 20.04'ü belirtilen dizine indirecektir. Uygun dosya uzantısını sağlayın; aksi takdirde dosyayı farklı bir formatta indirecektir. Aşağıdaki çıktıyı göz önünde bulundurun:

Linux Kıvırma Komutu

Yukarıdaki çıktıdan ubuntu.iso dosyası indiriliyor. İndirme süresini, dosya boyutunu, indirme hızını ve diğer istatistikleri görebiliriz. Yürütmeyi durdurmak için istediğiniz zaman CTRL+D tuşlarına basın.

Kesintiye uğrayan indirmeleri devam ettirin

İndirmelerin herhangi bir nedenden dolayı kesintiye uğrama ihtimali olabilir. Curl komutunu kullanarak indirmelere devam edebiliriz. Kesilen dosyayı devam ettirmek için '-C' seçeneğini curl komutuyla aşağıdaki gibi iletin:

 curl -C 

Yukarıdaki komut belirtilen URL'nin indirilmesine devam edecektir.

Birden Fazla Dosya İndirin

Birden çok dosyayı indirmek için, boşluklarla ayrılmış birden çok URL'yi aşağıdaki gibi belirtin:

 curl -O 

Yukarıdaki komut sırasıyla her iki URL'den de verileri indirecektir.

HTTP Başlıklarını Sorgula

HTTP üstbilgileri ek bilgiler içerir; web sunucusunun bu bilgiyi indirmesine izin verir. Bir web sitesinden HTTP başlıklarını sorgulamak için komutu '-I' seçeneğiyle aşağıdaki gibi yürütün:

 curl -I www.javatpoint.com 

Yukarıdaki komut aşağıdaki çıktıyı üretecektir:

Linux Kıvırma Komutu