Nhận cURLy: 10 điều hữu ích bạn có thể làm với cURL

Nhận cURLy: 10 điều hữu ích bạn có thể làm với cURL

Khi chúng ta bắt đầu tìm hiểu về các công cụ dòng lệnh, chúng ta có xu hướng coi chúng là một mục đích duy nhất. Bạn được dạy rằng





cat

in nội dung tệp,





ls

liệt kê tất cả các mục trong một thư mục và





du

hiển thị việc sử dụng không gian đĩa. Tuy nhiên, nhiều công cụ dòng lệnh có hàng tá tùy chọn, tất cả đều được mô tả gọn gàng trong

man

các tập tin. Một số trong số chúng có thể làm nên điều kỳ diệu khi kết hợp với các lệnh khác.



Tất nhiên, thật không hợp lý khi mong đợi rằng bất kỳ ai cũng nên nhớ mọi lựa chọn. Với ý nghĩ đó, thật tốt nếu bạn thường xuyên làm mới kiến thức về các lệnh Linux , bởi vì bạn có thể khám phá ra những công dụng mới cho chúng.

Lần này, chúng tôi đang tập trung vào Xoăn , một công cụ để truyền dữ liệu qua một số giao thức Internet như HTTP (S), FTP, Telnet, LDAP, IMAP, POP3, SMTP, v.v.





Nói một cách đơn giản, cURL thực hiện các yêu cầu khác nhau từ máy khách đến máy chủ, thiết lập kết nối giữa chúng bằng một giao thức cụ thể và các phương thức liên quan của nó. Ví dụ: với tư cách là một ứng dụng khách HTTP, cURL có thể gửi yêu cầu xem hoặc tải xuống nội dung (phương thức yêu cầu GET) hoặc đăng nội dung thông qua biểu mẫu trên trang web (phương thức yêu cầu POST). Nhiều ứng dụng và dịch vụ web cho phép cURL tương tác với các API của chúng (Giao diện lập trình ứng dụng).

Vì chức năng của chúng trùng lặp ở một mức độ nào đó, cURL và wget thường được so sánh với nhau. Cả hai công cụ đều có thể tải xuống nội dung từ Internet, nhưng wget hỗ trợ tải xuống đệ quy, duyệt web và thường cảm thấy sử dụng đơn giản hơn. Nếu bạn chỉ muốn tải xuống các tệp từ thiết bị đầu cuối, wget có lẽ là lựa chọn tốt hơn.





Mặt khác, nếu bạn cần các phương pháp xác thực HTTP nâng cao và muốn tải tệp lên cũng như tải xuống, bạn nên học cách cURL. Ngoài ra, wget chỉ hỗ trợ HTTP (S) và FTP, trong khi cURL bao gồm một loạt các giao thức. Điều này có nghĩa là cURL có thể làm được nhiều thứ hay ho hơn — và đây là mười ví dụ để chứng minh điều đó.

1. Nhận Báo cáo thời tiết

Nếu ai đó yêu cầu bạn kiểm tra thời tiết từ nhà ga, bạn sẽ thấy một số con số nhàm chán. Không phải với lệnh này.

curl http://wttr.in/LOCATION

Thông tin được cung cấp bởi một ứng dụng CLI có tên là chúng tôi đi , nhưng nếu bạn không muốn cài đặt nó, cURL có thể tìm nạp dự báo từ wttr.in giao diện người dùng web của nó. Tất cả những gì nó cần là vị trí mà bạn muốn dự báo. Chỉ cần nhập tên thành phố, mã sân bay hoặc địa chỉ IP hiện tại của bạn. Một tính năng mới hiển thị thông tin về các tuần trăng nếu bạn nhập:

curl wttr.in/Moon

2. Tải xuống tệp và tiếp tục tải xuống

Tải xuống tệp là điều chúng tôi thường làm trong trình duyệt. Đôi khi bạn sẽ muốn sử dụng trình quản lý tải xuống; ví dụ: khi tải xuống nhiều tệp cùng một lúc hoặc khi bạn muốn tạm dừng tải xuống. Mặc dù cURL không phải là lựa chọn phổ biến để tải xuống đồng thời (thay vào đó nên dùng wget), nhưng bạn vẫn có thể sử dụng nó cho mục đích đó bằng cách kết hợp các tùy chọn mạnh mẽ của nó (công tắc). Trước tiên, bạn sẽ cần một liên kết trực tiếp đến tệp. Trong ví dụ này, chúng tôi sẽ sử dụng bản PDF của tạp chí Linux Voice.

curl -O -C - https://www.linuxvoice.com/issues/016/Linux-Voice-Issue-016.pdf

Công tắc O viết hoa (-O) làm cho cURL lưu tệp với tên tệp mặc định (thường là tên từ chính liên kết). Nếu bạn muốn lưu nó dưới một tên khác, bạn sẽ sử dụng chữ thường o, theo sau là tên mới:

curl -o magazine.pdf -C - https://www.linuxvoice.com/issues/016/Linux-Voice-Issue-016.pdf

Theo mặc định, các tệp được lưu trong thư mục hiện tại (kiểm tra nó với

pwd

chỉ huy). Để lưu chúng ở nơi khác, hãy cung cấp đường dẫn sau nút chuyển -o. Công tắc -C - cho phép cURL tiếp tục tải xuống. Bạn sẽ tạm dừng nó bằng cách nhấn Ctrl + C trong terminal và tiếp tục bằng cách chạy lại lệnh tải xuống tương tự:

cURL hiển thị tiến trình tải xuống ở định dạng giống như bảng, với các cột chứa thông tin về tốc độ tải xuống, tổng kích thước tệp, thời gian đã trôi qua và hơn thế nữa. Nếu bạn không thích điều này, bạn có thể chọn một thanh tiến trình đơn giản hơn bằng cách thêm - # hoặc --progress-bar vào lệnh cURL của mình.

Để tải xuống nhiều tệp cùng một lúc, chỉ cần liệt kê các liên kết lần lượt:

curl -O file1.txt -O file2.pdf -O file3.zip

Với sự trợ giúp của các công cụ dòng lệnh khác, chúng tôi có thể tải xuống hàng loạt tất cả hình ảnh PNG và JPG từ blog Tumblr:

curl http://concept-art.tumblr.com/ | grep -o 'src='[^']*.[png-jpg]'' | cut -d' -f2 | while read l; do curl '$l' -o '${l##*/}'; done

Trong trường hợp này,

cut

grep

thu thập thông tin về tên tệp và định dạng nó để chỉ các tệp có phần mở rộng được chỉ định mới được hiển thị. Nếu bạn chạy lệnh mà không có đường dẫn cuối cùng:

curl http://concept-art.tumblr.com/ | grep -o 'src='[^']*.[png-jpg]'' | cut -d' -f2

bạn sẽ chỉ nhận được danh sách các tệp đáp ứng tiêu chí của chúng tôi, nhưng chúng sẽ không thực sự được tải xuống. cURL có thể lấy danh sách hình ảnh từ một loạt các trang, miễn là blog sử dụng phân trang tiêu chuẩn:

curl http://concept-art.tumblr.com/page/[1-7] | grep -o 'src='[^']*.[png-jpg]'' | cut -d' -f2

Bạn có thể sửa đổi phạm vi bằng cách thay đổi các số trong dấu ngoặc vuông. Một lần nữa, lệnh này sẽ chỉ liệt kê các hình ảnh; để tải chúng xuống, hãy chạy toàn bộ lệnh trong thư mục mà bạn muốn lưu hình ảnh:

curl http://concept-art.tumblr.com/page/[1-7] | grep -o 'src='[^']*.[png-jpg]'' | cut -d' -f2 | while read l; do curl '$l' -o '${l##*/}'; done

Nếu bạn thông thạo biểu thức chính quy , bạn có thể cải thiện giao diện và hiệu quả của lệnh này, đồng thời chia sẻ kết quả trong các nhận xét.

3. Quản lý tệp trên máy chủ FTP

Ngày nay, chúng ta không nghe nhiều về FTP, nhưng điều đó không có nghĩa là nó đã lỗi thời. Trên thực tế, nhiều dự án mã nguồn mở và các bản phân phối Linux chia sẻ phần mềm của họ trên các máy chủ FTP. Vì FTP được cURL hỗ trợ, bạn có thể sử dụng nó như một ứng dụng khách FTP đơn giản để tải lên và tải xuống tệp. Bạn có thể duyệt các tệp trên máy chủ FTP bằng cách truy cập các thư mục:

curl ftp://ftp.debian.org/debian/

Để nhập một thư mục con, hãy nhập tên của nó, theo sau là dấu gạch chéo (/).

Tải xuống tệp tương tự như tải xuống HTTP được mô tả trong phần trước. Bạn có thể sử dụng -o hoặc -O và thêm -C - nếu bạn muốn tạm dừng tải xuống.

curl -O ftp://ftp.heanet.ie/mirrors/linuxmint.com/stable/17.3/linuxmint-17.3-kde-64bit.iso

Mặc dù cURL không hỗ trợ tải xuống đệ quy (hãy nhớ, wget thì có!), Nó vẫn có thể tải xuống một loạt tệp cùng một lúc. Điều kiện duy nhất là tên tệp tuân theo một mẫu. Ví dụ: chúng tôi có thể tải xuống từ một máy chủ lưu trữ hình nền, nơi tất cả các hình nền đều được đặt tên là 'wallpaperNUMBER':

curl -O ftp://ftp.myserver.com/files/wallpaper[0-120].jpg

Một số máy chủ FTP yêu cầu xác thực trước khi bạn có thể tải xuống tệp. cURL cho phép bạn đăng nhập với tùy chọn -u (người dùng):

curl -u username:password -O ftp://ftp.protectedserver.com/files/example.txt

Bạn cũng có thể tải tệp lên máy chủ FTP với tùy chọn -T (chuyển):

curl -u username:password -T /home/user/Documents/test.txt ftp://ftp.myserver.com

Tại đây, bạn cũng có thể xác định nhiều tệp dưới dạng một phạm vi. Tính năng này đôi khi được gọi là 'lấp lánh'. Nếu tên tệp không theo mẫu, chỉ cần liệt kê chúng trong dấu ngoặc nhọn (

-T '{file1.txt,image27.jpg}'

). Ngược lại, nếu chúng có tên tương tự, hãy áp dụng cùng một logic từ ví dụ tải xuống Tumblr và sử dụng dấu ngoặc vuông (

-T 'photo[1-50].jpg'

). Đảm bảo cung cấp đường dẫn đầy đủ đến các tệp nếu chúng không có trong thư mục hiện tại của bạn.

4. Kiểm tra xem trang web có bị lỗi không

Tất cả chúng tôi đã ở đó. Một trang web bạn thực sự cần đột nhiên ngừng hoạt động. Khi đó Facebook sẽ không tải. Đối mặt với một vấn đề thực sự ở thế giới thứ nhất, bạn sẽ làm gì?

Bạn có thể Google nó, nhờ một người bạn kiểm tra nó cho bạn hoặc sử dụng một trong những trang web phục vụ duy nhất đó để cho bạn biết nếu một trang web ngừng hoạt động. Hoặc bạn có thể kích hoạt thiết bị đầu cuối và chạy cURL:

curl -Is https://www.twitter.com -L | grep HTTP/

Chữ hoa tôi chuyển (-I) kiểm tra tiêu đề HTTP của một trang web và tùy chọn -L (vị trí) được thêm vào để làm cho chuyển hướng theo dõi cURL. Điều này có nghĩa là bạn không phải nhập URL Facebook đầy đủ; chỉ viết facebook.com và cURL sẽ lo phần còn lại nhờ -L. Nếu có bất kỳ chuyển hướng nào, chúng sẽ được hiển thị với trạng thái HTTP của riêng chúng.

Thông báo mà chúng tôi quan tâm là '200 OK', có nghĩa là mọi thứ đều ổn với trang web. Nếu nó thực sự xuống, bạn sẽ thấy một cái gì đó như thế này:

Mã trạng thái HTTP chỉ mang tính thông tin khi sự hiểu biết của bạn về chúng cho phép. Phương pháp này không hoàn toàn đáng tin cậy vì một trang web có thể trả về mã trạng thái cho biết một yêu cầu đã được xử lý thành công, nhưng nó sẽ trống khi bạn mở nó trong trình duyệt. Tuy nhiên, trong hầu hết các trường hợp, nó phải tương ứng với tình hình thực tế và cho bạn biết điều gì đang lên - hoặc xuống.

5. Mở rộng URL đã rút gọn

URL rút gọn không phải là xấu. Nếu không có chúng, sẽ rất khó để chia sẻ liên kết trên Twitter và các mạng xã hội giới hạn ký tự khác. Một số dịch vụ rút ngắn URL cũng cung cấp các phân tích hữu ích. Nhưng luôn có rủi ro rằng ai đó đang cố gắng che giấu nội dung độc hại đằng sau một URL rút gọn hoặc một kẻ lừa đảo đang che giấu một Rickroll (hoặc điều gì đó tồi tệ hơn nhiều). Nếu bạn cảm thấy nghi ngờ về một URL được rút ngắn vì bất kỳ lý do gì, cURL có thể giúp bạn mở rộng nó và tìm ra nơi chính xác nó dẫn đến:

curl -sIL http://buff.ly/1lTcZSM | grep ^Location;

hoặc

curl -sI http://buff.ly/1lTcZSM | sed -n 's/Location: *//p';

Bạn có thể kết hợp cURL với

grep

hoặc

sed

; sự khác biệt chính là ở định dạng. Sed là một trong những công cụ mà mọi người dùng Linux nên biết, và nó bổ sung cho cURL trong điều này và một vài trường hợp sử dụng khác. Đừng quên rằng cURL có thể tải xuống các tệp từ một URL rút gọn (miễn là URL thực sự trỏ đến một tệp):

curl -L -o filename.txt http://short.url

Cú pháp giống như với các bản tải xuống cURL khác và tùy chọn -L sẽ xử lý việc chuyển hướng từ URL rút gọn sang URL ban đầu.

6. Thể hiện sự đánh giá cao của bạn đối với Nghệ thuật ASCII

Phải thừa nhận rằng điều này không đặc biệt hữu ích, nhưng nó trông rất tuyệt. Với sự giúp đỡ của

pv

, một tiện ích để theo dõi tiến trình dữ liệu, cURL có thể hiển thị hình ảnh động ASCII trong thiết bị đầu cuối.

curl -s http://artscene.textfiles.com/vt100/wineglas.vt | pv -L9600 -q

Các tùy chọn -s và -q giữ cả hai lệnh ở chế độ im lặng (yên lặng). Tùy chọn -L ở đây đề cập đến lệnh pv và cho phép bạn sửa đổi tốc độ truyền dữ liệu theo byte mỗi giây. Nói cách khác, nếu hoạt ảnh chuyển động quá nhanh hoặc quá chậm, hãy thử chơi với số đó. Ngoài hình ảnh động, cURL có thể hiển thị nghệ thuật ASCII tĩnh, đơn giản:

Web có rất nhiều trang web với đủ loại nghệ thuật ASCII: từ những tác phẩm chất lượng cao, chi tiết đến kinh ngạc cho đến những tài liệu kỳ lạ, ngớ ngẩn và thậm chí là NSFW. Kỹ thuật nghệ thuật kỹ thuật số này có từ những năm 1960 và ngày nay nó là một phần của lịch sử và văn hóa Internet, được duy trì tồn tại trong nhiều bộ sưu tập và công cụ cho phép bạn chuyển đổi văn bản và hình ảnh sang nghệ thuật ASCII . Bạn có thể sử dụng nó để trang trí thiết bị đầu cuối của mình hoặc để chơi khăm bạn bè - bất cứ thứ gì làm nổi con thuyền của bạn.

7. Thử nghiệm với Social Media

Sử dụng mạng xã hội từ thiết bị đầu cuối không có gì mới - chúng tôi đã cho bạn thấy các ứng dụng Twitter dòng lệnh dành cho Linux. Mặc dù có thể bạn sẽ không chuyển sang cURL làm công cụ xã hội hóa trực tuyến của mình, nhưng thật tốt khi biết rằng bạn có thể đăng lên Facebook với nó, như được mô tả ở đây. Bạn sẽ nhận thấy rằng, về mặt kỹ thuật, cURL không tự làm điều đó; sự kết hợp của các công cụ giúp hoàn thành công việc.

Đối với Twitter, trước đây có thể quản lý nó trực tiếp từ thiết bị đầu cuối với cURL. Sau đó, Twitter đã thay đổi API của mình và bây giờ có một ứng dụng khách cURL đặc biệt cho Twitter được gọi là Twurl. Đây không phải là thứ dễ sử dụng nhất, đặc biệt là đối với người mới bắt đầu và nó yêu cầu xác thực với Nền tảng quảng cáo Twitter. Điều này có ý nghĩa nếu bạn là nhà phát triển hoặc người dùng nâng cao, nhưng không quá nhiều nếu bạn chỉ muốn tweet từ dòng lệnh. Tuy nhiên, vẫn có những cách để bạn vui vẻ với Twitter. Bạn có thể sử dụng cURL để kiểm tra số lượng người theo dõi của người dùng:

curl -s https://twitter.com/username | grep -o '[0-9,]* Followers';

8. Tìm địa chỉ IP bên ngoài của bạn

Tìm địa chỉ IP cục bộ của bạn thật dễ dàng - chỉ cần chạy

được rồi, google bật đèn pin của tôi lên
ifconfig

hoặc tham khảo applet Quản lý mạng của bạn. Đối với IP bên ngoài, hầu hết mọi người sử dụng các trang web chuyên dụng để lấy thông tin này. Tuy nhiên, một số điều dễ thực hiện hơn từ thiết bị đầu cuối và đây có thể là một trong số đó. Bạn cũng có thể tạo bí danh cho lệnh cURL. Có một số dịch vụ trực tuyến hợp tác với cURL:

curl ipinfo.io
curl -s https://4.ifcfg.me
curl -s http://whatismyip.akamai.com
curl ifconfig.me
curl -s icanhazip.com

Một số có thể cho bạn biết thêm về bất kỳ địa chỉ IP bên ngoài nào:

curl ipinfo.io/207.46.13.41
curl ifconfig.me/207.46.13.41

Tất cả những gì bạn phải làm là chọn một dịch vụ. Nếu bạn thiếu quyết đoán, chỉ cần đưa tất cả chúng vào bí danh của bạn, làm giải pháp dự phòng.

9. Dán văn bản và chia sẻ hình ảnh

Phá vỡ quy trình làm việc của bạn không bao giờ tốt cho năng suất và sự tập trung. Nếu bạn thực hiện hầu hết công việc của mình trong thiết bị đầu cuối, việc chuyển sang trình duyệt chỉ để chia sẻ một vài tệp có thể không thực tế, nếu không muốn nói là khó chịu. May mắn thay, một số dịch vụ chia sẻ tệp và pastebin được sinh ra để hoạt động với cURL, vì vậy bạn có thể sử dụng chúng ngay từ thiết bị đầu cuối mà không cần tài khoản người dùng.

Thùng rácSprunge.us có cú pháp tương tự. Với Clbin, bạn đặt một tệp cục bộ hoặc đầu ra của một lệnh và nó trả về một liên kết đến văn bản đã tải lên của bạn:

cat textfile.txt | curl -F 'clbin=<-' https://clbin.com

Nó cũng hỗ trợ tải lên hình ảnh (PNG, JPG và GIF):

curl -F 'clbin=@image.png' https://clbin.com

Nếu bạn muốn sử dụng Sprunge.us thay thế, hãy nhập:

cat textfile.txt | curl -F 'sprunge=<-' http://sprunge.us

Sprunge.us hiện không hỗ trợ tải lên hình ảnh.

Ix.io dựa trên nguyên tắc tương tự như hai dịch vụ trước, với một vài tính năng bổ sung. Để tải lên một tệp, hãy nhập:

cat file.txt | curl -F 'f:1=<-' ix.io

hoặc

curl -F 'f:1=@file.txt' ix.io

Khi bạn nhận được một liên kết đến văn bản đã tải lên, bạn có thể sửa đổi URL của nó để hiển thị tô sáng cú pháp (với

ix.io/yourpaste+

,

ix.io/yourpaste/

, hoặc

ix.io/yourpaste/language

cho một ngôn ngữ lập trình hoặc kịch bản cụ thể). Cũng có thể giới hạn số lần một liên kết có thể được xem bằng cách sửa đổi số sau

'read:1'

giá trị:

cat file.txt | curl -F 'f:1=<-' -F 'read:1=2' ix.io

Ix.io chủ yếu dành cho các tệp dựa trên văn bản như mã nguồn hoặc nhật ký hệ thống. Nếu bạn muốn tải lên nhiều định dạng tệp khác nhau, hãy sử dụng Transfer.sh . Nó hỗ trợ hình ảnh, mã hóa tệp và giữ tệp của bạn trực tuyến trong hai tuần. Bạn có thể tải lên tới 5 GB dữ liệu lên Transfer.sh. Đây là cách thực hiện:

curl --upload-file bunnies.jpg https://transfer.sh/bunnies.jpg

Bạn có thể tự do xác định tên của tệp đã tải lên. Để tải lên nhiều tệp, hãy liệt kê chúng lần lượt với tùy chọn -F:

curl -i -F filedata=@/tmp/hello.txt -F filedata=@/tmp/hello2.txt https://transfer.sh/

10. Kiểm tra Thư chưa đọc trên GMail

Có rất nhiều tiềm năng được mở khóa trong cURL nếu bạn sẵn sàng đi sâu vào chi tiết của các giao thức liên quan đến email (SMTP, POP, IMAP). Để kiểm tra email nhanh chóng, lệnh này sẽ thực hiện. Nó phân tích nguồn cấp dữ liệu GMail của bạn và định dạng đầu ra (chủ đề email và người gửi) với

tr

,

awk

,

sed

và / hoặc

grep

các lệnh. Lưu ý rằng giải pháp này cực kỳ không an toàn vì nó để lộ thông tin đăng nhập của bạn cho bất kỳ ai có quyền truy cập vào thiết bị đầu cuối của bạn. Phiên bản đầu tiên hiển thị tên người gửi, trong khi phiên bản thứ hai chỉ in các chủ đề email chưa đọc:


curl -u username:password --silent 'https://mail.google.com/mail/feed/atom' | tr -d '
' | awk -F '' '{for (i=2; i<=NF; i++) {print $i}}' | sed -n 's/

curl -u username:password --silent 'https://mail.google.com/mail/feed/atom' | grep -oPm1 '(?<=)[^<]+' | sed '1d'

CURL có thể làm gì khác?

cURL hiếm khi được sử dụng như một lệnh độc lập. Hầu hết mọi người sử dụng nó như một phần của tập lệnh hoặc ứng dụng. Tuy nhiên, có thể tạo một lớp lót thực tế với cURL, như chúng tôi đã trình bày ở đây. Nhiều ví dụ trong số này được điều chỉnh từ CommandLineFu, một nguồn tuyệt vời của các bản hack dòng lệnh thông minh, và bạn không nên coi chúng như được đặt trong đá.

Với đủ kiến ​​thức và kinh nghiệm, chúng ta có thể sửa đổi mọi lệnh, định dạng nó theo cách khác hoặc thay thế hoàn toàn bằng một giải pháp tốt hơn. Bạn có thể cải thiện các lệnh cURL được đề xuất của chúng tôi không? Bạn có biết bất kỳ công dụng thú vị nào khác cho cURL không? Chia sẻ mẹo của bạn trong các bình luận.

Tín dụng hình ảnh: Giới thiệu bên trong về dòng lệnh của Osama Khalid qua Flickr.

Đăng lại Đăng lại tiếng riu ríu E-mail Xóa các tệp và thư mục Windows này để giải phóng dung lượng đĩa

Cần xóa dung lượng ổ đĩa trên máy tính Windows của bạn? Dưới đây là các tệp và thư mục Windows có thể được xóa một cách an toàn để giải phóng dung lượng ổ đĩa.

Đọc tiếp
Chủ đề liên quan
  • Linux
  • FTP
  • Quản lý tải xuống
  • Phần cuối
Giới thiệu về tác giả Ivana Isadora Devcic(24 bài báo đã xuất bản)

Ivana Isadora là một nhà văn và dịch giả tự do, người yêu Linux và fangirl KDE. Cô ấy ủng hộ và quảng bá phần mềm nguồn mở và miễn phí, đồng thời cô ấy luôn tìm kiếm các ứng dụng mới, sáng tạo. Tìm hiểu cách liên lạc ở đây .

Xem thêm từ Ivana Isadora Devcic

Theo dõi bản tin của chúng tôi

Tham gia bản tin của chúng tôi để biết các mẹo công nghệ, đánh giá, sách điện tử miễn phí và các ưu đãi độc quyền!

Bấm vào đây để đăng ký