Nur Hamim
Nur Hamim Anak desa yang gemar berkomunitas, suka menulis dan mencari hal baru seputar Unix/Linux dan Cloud. Saat ini sedang menempuh pendidikan S1 TI di Unindra dan kebetulan bekerja di PT Biznet GIO Nusantara

Linux: Cara Menggunakan Curl


Linux: Cara Menggunakan Curl

Belajar Linux ID - Curl adalah command-line atau utility yang tersedia di Linux. Curl sendiri singkatan dari Client URL. Biasanya curl digunakna untuk test koneksi ke URL serta dapat digunakan sebagai tool transfer data. Selain protokol HTTP, curl juga dapat digunakan pada protokol FTP, IMAP, Telnet, SMTP.

Sebagian besar paket curl sudah terinstall di distribusi Linux saat ini. Berikut ini cara install curl di beberapa distro Linux

Ubuntu dan Debian

1
2
$ sudo apt update
$ sudo apt install curl

CentOS dan Fedora

1
sudo yum install curl

ArchLinux

1
$ pacman -Sy curl

OpenSUSE

1
$ zypper install curl

Berikut kami contohkan bagaimana cara cek versi curl di Ubuntu

1
2
3
4
5
6
$ curl --version
curl 7.58.0 (x86_64-pc-linux-gnu) libcurl/7.58.0 OpenSSL/1.1.1 zlib/1.2.11 libidn2/2.0.4 libpsl/0.19.1 (+libidn2/2.0.4) nghttp2/1.30.0 librtmp/2.3
Release-Date: 2018-01-24
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL
$

Sintak dalam penggunaan curl sebagai berikut

1
curl [options] [URL...]

Berikut opsi - opsi curl yang dapat Anda gunakan:

Options

Opsi Keterangan
-o –output: write to file
-u user:pass –user: Authentication
-v –verbose
-vv Even more verbose
-s –silent
-i –include: Include the HTTP-header in the output
-I –head: headers only

Request

Opsi Keterangan
-X POST –request
-L follow link if page redirects

Data

Opsi Keterangan
-d ‘data’ –data: HTTP post data, URL encoded (eg, status=”Hello”)
-d @file –data via file
-G –get: send -d data via get

Headers

Opsi Keterangan
-A –user-agent
-b name=val –cookie
-b FILE –cookie
-H “X-Foo: y” –header
–compressed use deflate/gzip

Untuk menggunakan curl sangatlah mudah, misalnya kita ingin mengetahui HTTP Headers dari sebuah website menggunakan curl dapat di lakukan contoh

1
2
3
4
5
6
7
8
9
10
11
ubuntu@my-jumper:~$ curl -I https://www.ubuntu.com/
HTTP/1.1 301 Moved Permanently
server: nginx/1.14.0 (Ubuntu)
date: Sat, 14 Nov 2020 10:29:21 GMT
content-type: text/html
content-length: 175
location: https://ubuntu.com/
link: <https://assets.ubuntu.com>; rel=preconnect; crossorigin, <https://assets.ubuntu.com>; rel=preconnect, <https://res.cloudinary.com>; rel=preconnect
x-cache-status: MISS from content-cache-1ss/0

ubuntu@my-jumper:~$

Selanjutnya jika ingin mengetahui website menggunakan HTTP/2 dapat dilakukan menggunakan curl contoh

1
2
3
4
ubuntu@my-jumper:~$
ubuntu@my-jumper:~$ curl -I --http2 -s https://belajarlinux.id/ | grep HTTP
HTTP/2 200
ubuntu@my-jumper:~$

Selain itu curl juga dapat **GET XML**

1
$ curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET "http://hostname/resource"

GET JSON

1
$ curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET "http://hostname/resource"

JSON PUT

1
$ curl -i -H 'Content-Type: application/json' -H 'Accept: application/json' -X PUT -d '{"updated_field1":"updated_value1"}' "http://hostname/resourcex"

POST

1
$ curl -i -X POST -H 'Content-Type: application/x-www-form-urlencoded' --data 'key1=value1&key2=value2' url

Debugging Mode

1
$ curl -XGET -vvv http://hostname/resource > dev\null

Download Multi File

1
2
$curl -O http://mirrors.edge.kernel.org/archlinux/iso/2018.06.01/archlinux-2018.06.01-x86_64.iso \
$ -O https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.4.0-amd64-netinst.iso

Resume Download

1
$ curl -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso

Jika tiba - tiba koneksi Anda terputus Anda dapat melanjutkannya kembali

1
$ curl -C - -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso

Transfer file via FTP

1
$ curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/

Setelah masuk, perintah akan mencantumkan semua file dan direktori di direktori beranda pengguna atau user. Anda dapat download satu file dari server FTP menggunakan sintaks berikut:

1
$ curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/file.tar.gz

Untuk mengupload file ke server FTP, gunakan -T diikuti dengan nama file yang ingin Anda upload:

1
$ curl -T newfile.tar.gz -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/

Send Cookies

Terkadang Anda mungkin perlu membuat permintaan HTTP dengan cookie tertentu untuk mengakses sumber daya jarak jauh atau untuk men-debug masalah.

Secara default, saat meminta sumber daya dengan curl, tidak ada cookie yang dikirim atau disimpan.

Untuk mengirim cookie ke server, gunakan tombol -b diikuti dengan nama file yang berisi cookie atau string.

Misalnya, untuk mengunduh file rpm JDK Oracle Java jdk-10.0.2_linux-x64_bin.rpm, Anda harus meneruskan cookie bernama oraclelicense dengan nilai a:

1
$ curl -L -b "oraclelicense=a" -O http://download.oracle.com/otn-pub/java/jdk/10.0.2+13/19aef61b38124481863b1413dce1855f/jdk-10.0.2_linux-x64_bin.rpm

Curl Sebagai Proxy

curl mendukung berbagai jenis proxy, termasuk HTTP, HTTPS, dan SOCKS. Untuk transfer data melalui server proxy, gunakan opsi -x (--proxy), diikuti dengan URL proxy.

Perintah berikut mengunduh sumber daya yang ditentukan menggunakan proxy pada 192.168.44.1 port 8888:

1
$ curl -x 192.168.44.1:8888 http://domainanda.id/

Jika server proxy memerlukan otentikasi, gunakan opsi -U (--proxy-user) diikuti dengan nama pengguna dan kata sandi dipisahkan oleh titik dua (pengguna: kata sandi):

1
$ curl -U username:password -x 192.168.44.1:8888 http://domainanda.id/

Selengkapnya mengenai curl dapat dilihat melalui dokumentasi curl berikut: https://curl.se/docs/

Selamat mencoba 😁

comments powered by Disqus