Curl Komutu
Kelime anlamı ile Client URL manasına gelmektedir. URL'ler üzerinden veri transferi yapabilen bir komut satırıdır. Veri alabilir veya veri gönderebilir.
`curl` Komutunun Temel Kullanımı
Temel HTTP GET İsteği:
curl http://example.com
İstek atılan DOMAIN alanının geriye verdiği cevabı ekrana yazdırır. Yukarıdaki komutta http://example.com alanına bir GET istek atıldığı için geriye HTML sayfası döndürmüştür.
HTTP POST İsteği:
curl -X POST -d "param1=value1¶m2=value2" http://example.com
Yukarıdaki örnekte "http://example.com" alanına POST isteği atılmıştır ve geriye yanıt döndürülmüştür. Veriyi POST yöntemiyle göndermek için -d seçeneği kullanılır.
Başlık Bilgilerini Görüntüleme:
curl -I http://example.com
Yukarıdaki örnekte hedef DOMAIN alanına bir istek atılmış ve geriye sunucunun başlık bilgileri döndürülmüştür. Bunlar (Server: ECAcc (nyd/D193), Content-Length: 1256 vb.) değerlerdir.
`curl` Komutu ile Dosya İndirme
Dosyayı Orijinal İsmi ile İndirme:
curl -O https://bilimekseni.com/img/pictures/1721820353602-111635092.jpeg
Yukarıdaki örnekte dosya orijinal ismi ile bulunduğu klasöre indirilmiştir. Bu komut çalıştırıldığında hangi klasör açıksa indirme işlemi o klasör içerisine yapılır.
Dosyayı Belirli Bir İsim ile İndirme:
curl -o resim.jpeg https://bilimekseni.com/img/pictures/1721820353602-111635092.jpeg
Yukarıdaki örnekte, sunucu içerisindeki dosya, resim.jpeg ismiyle indirilmiştir. Dosya, curl komutunun çalıştığı klasöre bu isimle kaydedilmiştir.
`curl` Komutu ile Dosya Yükleme
HTTP/HTTPS ile Dosya Yükleme:
curl -T dosya.txt http://example.com/upload
Yukarıdaki örnekte dosya.txt dosyası belirtilen URL'ye yüklenmiştir. Bu, `PUT` metodunu kullanarak dosyayı sunucuya yükler.
Form Verisi ile Dosya Yükleme:
curl -F "file=@dosya.txt" http://example.com/upload
Yukarıdaki örnekte dosya, form verisi olarak yüklenmiştir. Form alanının adı file ve yüklenen dosya dosya.txt'dir.
Birden Fazla Dosya Yükleme:
curl -F "file1=@dosya1.txt" -F "file2=@dosya2.txt" http://example.com/upload
Yukarıdaki örnekte birden fazla dosya yüklenmiştir. Her bir dosya ayrı bir -F seçeneği ile belirtilmiştir.
Form Verileri ile Diğer Alanları Gönderme:
curl -F "username=user" -F "file=@dosya.txt" http://example.com/upload
Yukarıdaki örnekte, dosya ile birlikte diğer form verileri de gönderilmiştir. Burada username form alanı user olarak ayarlanmıştır.
Bir URL'den Dosya Yükleme:
curl -s http://example.com/origin.txt | curl -T - http://example.com/destination
Yukarıdaki örnekte, bir URL'den çekilen dosya, başka bir URL'ye yüklenmiştir. İlk curl komutu veriyi alır, ikinci curl komutu bu veriyi yükler.
İçerik Türünü Belirtme:
curl -F "file=@dosya.txt" -H "Content-Type: application/octet-stream" http://example.com/upload
Yukarıdaki örnekte dosyanın içerik türü belirtilmiştir. Bu tür genellikle ikili veriler için kullanılır.
Ek Protokoller ve Kullanımlar
FTP ile Dosya İndirme:
curl -O ftp://ftp.example.com/dosya.txt
HTTPS ile Dosya Yükleme:
curl -T dosya.txt https://example.com/upload
JSON Verisi Gönderme:
curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' http://example.com
`curl`, çok sayıda seçenek ve özellik sunduğu için çeşitli veri transferi ve test senaryoları için kullanışlıdır. Detaylı bilgi için man curl komutunu terminalde çalıştırarak curl'ün tüm seçeneklerine erişebilirsiniz.
Eğer `curl` Komutu Yoksa
Sunucular, genel olarak kendi yapılandırmalarımıza açık olarak gelir. Bu nedenle kullandığımız işletim sistemi içerisinde `curl` komutu bulunmayabilir. Eğer böyle bir durum varsa `curl` komutunu indirmek için:
/*Debian ve Ubuntu Tabanlı Sistemler (örn. Ubuntu, Debian, Linux Mint)*/
sudo apt update
sudo apt install curl
/*!Red Hat ve Fedora Tabanlı Sistemler (örn. CentOS, Fedora, RHEL)*/
sudo dnf install curl // Fedora ve RHEL 8+
sudo yum install curl // CentOS ve RHEL 7 ve daha eski sürümler
/*Arch Linux Tabanlı Sistemler (örn. Arch Linux, Manjaro)*/
sudo pacman -S curl
/*openSUSE*/
sudo zypper install curl
Yukarıdaki inderme yöntemlerinden kendi işletim sistminize uygun olanı belirleyip gerekli adımları takip etmeniz yeterlidir.