Tuesday, July 19, 2022

 

Cách dùng lệnh CURL trên Linux (Ubuntu/Debian/CentOS / Fedora)

Trong bài này mình sẽ hướng dẫn các bạn cách cài đặt và sử dụng lệnh Curl trên Linux, thư viện curl command-line này dùng để truyền dữ liệu đến một máy chủ khác với nhiều tùy chọn khác nhau.

test php

Nếu bạn là lập trình viên đang làm ở lĩnh vực website thì không xa lạ gì với các thư viện Curl, nó được dùng để tạo những request đến website khác với mục đích lấy kết quả mà website đó trả về để xử lý theo yêu cầu cụ thể nào đó.

Trong Linux cũng hỗ trợ một package curl sử dụng bằng dòng lệnh, mục đích là giúp Unix/Linux có thể download các files và các package trên internet bằng dòng lệnh trên terminal.

Curl không được tích hợp trong một số bản phối của Linux, vì vậy trước khi sử dụng thì bạn phải cài đặt nó trước nhé.

Bài viết này được đăng tại [free tuts .net]

1. Cài đặt Curl trên Linux

ADVERTISEMENT

Cài đặt Curl trên Ubuntu/Debian

Trong các hệ thống Linux mới nhất thì curl được cài đặt sẵn. Tuy nhiên, nếu bạn đang chạy phiên bản Ubuntu hoặc Debian thì cần chạy lệnh sau để cài đặt.

# apt-get install curl

Chạy lệnh sau để kiểm tra xem đã cài đặt thành công chưa.

dpkg -l | grep curl

Cài đặt Curl trên RHEL / CentOS / Fedora

Để cài đặt curl trên các phiên bản RHELCentOS và Fedora thì bạn hãy đăng nhập qua SSH với quyền root và chạy lệnh sau.

# yum install curl

Tương tự, hãy chạy lệnh sau để kiểm tra xem đã cài đặt Curl trên CentOS thành công hay chưa.

# rpm -qa | grep curl

Cài đặt Curl trên OpenSUSE

Trên OpenSUSE, cài đặt curl bằng cách chạy lệnh sau.

# zypper install curl

Chạy lệnh sau để xem đã cài thành công hay chưa.

# zypper se curl

Cài đặt Curl trên ArchLinux

Để cài đặt Curl trên ArchLinux thì chạy lệnh sau.

# pacman -Sy curl

Và cuối cùng, hãy chạy lệnh sau để kiểm tra.

# pacman -Qi curl

Trên là 3 cách cài đặt Curl trên Linux, bài này đã hướng dẫn bạn cài đặt ở hầu hết các phiên bản của nó.

2. Cách sử dụng Curl trên Linux

Cú pháp chung của lệnh Curl trong Linux như sau:

curl [options] [URL...]

Trong đó tham số URL là bắt buộc, còn OPTIONS thì có thể có hoặc không.

URL là đường dẫn trỏ đến thư viện / mã nguồn trên internet, thường là đường dẫn các website.

Ví dụ: Lấy thông tin mã nguồn của website freetuts.net.

# curl freetuts.net

Lệnh sẽ trả kết quả về là nội dung mã HTML của website. Nếu bạn không chỉ rõ sử dụng phương thức HTTP hay HTTPS thì nó sẽ lấy giá trị mặc định là HTTP.

3. Lưu kết quả Curl vào file trên Linux

Ở ví dụ phần 2 mình chỉ hiển thị mã HTML trên màn hình terminal. Để lưu nó vào một file thì bạn cần thêm option -o hoặc -O nhé.

Ví dụ: Lưu file vue.js về và đặt cho nó cái tên mới.

curl -o vue-v2.6.10.js https://cdn.jsdelivr.net/npm/vue/dist/vue.js

Nếu bạn muốn giữ nguyên tên thì sử dụng tùy chọn -O.

curl -O https://cdn.jsdelivr.net/npm/vue/dist/vue.js

Nó sẽ lưu ngay chính thư mục mà bạn đang đứng.

4. Sử dụng Curl download nhiều file trên Linux

Để tải nhiều file cùng lúc thì hãy sử dụng tùy chọn -o nhiều lần.

Ví dụ dưới đây mình tải Arch Linux và Debian cùng lúc.

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

5. Resume download với Curl

Trong quá trình tải, đôi khi xảy ra tình trạng máy tính bị ngắt kết nối mạng. Lúc này nếu bạn muốn Linux tiếp tục tải ngay thời điểm đó thay vì tải lại từ đầu thì sử dụng tùy chọn -C.

Ví dụ: Nếu bạn đang tải Ubuntu 18.04 bằng lệnh sau.

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

Đột nhiên bị ngắt kế nối mạng, và sau khi phục hồi lại mạng thì bạn chạy lệnh sau để tiếp tục download.

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

6. Xem thông tin Header bằng Curl trong Linux

HTTP Header là những thông tin truyền tải giữa máy chủ và máy khác, nó gồm những cặp key : value.

Nếu bạn là một web developer thì không còn xa lạ gì với HTTP Header. Để xem nó trong Curl Linux thì bạn sử dụng thêm tùy chọn -I nhé.

Ví dụ: Lấy thông tin Header của đường dẫn sau: https://www.ubuntu.com/

curl -I --http2 https://www.ubuntu.com/

Kết quả như sau:

curl header JPG

7. Kiểm tra xem website có hỗ trợ HTTP/2 không?

Để kiểm tra xem một URL có hỗ trợ giao thức HTTP / 2 hay không thì chúng ta sẽ kiểm tra trong header, vì vậy mình sẽ kết hợp lệnh Grep để lọc thông tin.

curl -I --http2 -s https://linuxize.com/ | grep HTTP

Tùy chọn -s yêu cầu Curl chạy trong im lặng, ẩn các thông tin lỗi ...

Nếu server của URL trên có hỗ trợ HTTP/2 thì kết quả sẽ là:

HTTP/2 200

Ngược lại nó sẽ in ra là:

HTTP/1.1 200 OK

Kể từ phiên bản Curl 7.47.0 thì bạn không cần dùng tùy chọn --http2 bởi mặc định HTTP/2 được bật cho tất cả các kết nối.

8. Kiểm tra chuyển hướng redirect URL khi dùng Curl Linux

Mình sẽ lấy một ví dụ đó là truy xuất vào trang web google.com.

Khi bạn nhập url đó vào trình duyệt thì google sẽ chuyển hướng sang domain www.google.com.

Nhưng trong Curl thì khác, kết quả bạn sẽ nhận là một thông báo là click vào để chuyển sang version có www.

curl google.com

curl redirect JPG

Để giúp Curl nhận được kết quả chuyển hướng cuối cùng thì ta thêm tùy chọn -L.

curl -L google.com

9. Thay đổi User Agent trong Curl Linux

Có một số website họ chặn bot đọc nên yêu cầu request phải có User Agent. Đây chính là thông tin của trình duyệt đang sử dụng để truy cập vào website.

Khi bạn sử dụng Curl thì chúng ta không có dùng trình duyệt, vì vậy phải khai báo giả lập một thông tin User Agent bằng cách thêm tùy chọn -A.

curl -A "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" https://getfedora.org/

Về User Agent thì mỗi trình duyệt và mỗi version khác nhau, vì vậy bạn nên tìm trên internet để nhập cho đúng.

10. Truyền file qua FTP

Để truy cập vào một máy chủ được bảo vệ bằng tài khoản FTP thì bạn phải xin thông tin tên đăng nhập và mật khẩu FTP của website đó, sau đó sử dụng tùy chọn -U với cú pháp như sau:

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

Ví dụ: Mình cần tải một file ftp://ftp.example.com/file.tar.gz

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

Tươgn tự, để upload file lên server sử dụng tài khoản FTP bằng Curl thì ta dùng tùy chọn -T đặt vào file bạn muốn upload.

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

Trên là một số cách sử dụng Curl trong Linux, nó tương đối cơ bản nhưng cũng phục vụ được rất nhiều công việc trong quá trình quản trị server Linux. Hẹn gặp lại các bạn bài tiếp theo nhé.

No comments:

Post a Comment

So sánh các GitFlow model và áp dụng với CICD

https://medium.com/oho-software/so-s%C3%A1nh-c%C3%A1c-gitflow-model-v%C3%A0-%C3%A1p-d%E1%BB%A5ng-v%E1%BB%9Bi-cicd-b6581cfc893a