כיצד להשתמש בפקודה Curl בלינוקס

מדריך נרחב המסביר את השימוש בפקודת curl כדי להביא דפי אינטרנט ולהורדת קבצים ישירות מהמסוף שלך

ה סִלְסוּל command הוא עוד כלי מעניין אחד של שורת הפקודה שיש ללינוקס להציע לך. סִלְסוּל הפקודה מאפשרת למשתמש להביא קבצים מהשרת.

סִלְסוּל הוא בחירה פופולרית של מפתחי האפליקציות ומשתמשי לינוקס תכופים בגלל התמיכה שלו במספר פרוטוקולים כמו RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, HTTP, HTTPS, FTP, FTPS, IMAP, IMAPS, DICT, FILE, GOPHER, LDAP, LDAPS, POP3, POP3S וכו'.

סִלְסוּל הפקודה עושה הרבה יותר מסתם להביא עבורך את דפי האינטרנט. הכרת האפשרויות הזמינות בפקודה זו הופכת אותה למגוון יותר לשימוש שלך. תנו לנו לצלול לתוך המדריך כדי להבין טוב את השימוש ב- סִלְסוּל פקודה באמצעות כמה דוגמאות קצרות.

הַתקָנָה

לפני השימוש ב סִלְסוּל הפקודה, בדוק אם היא כבר מותקנת במערכת שלך. השתמש בפקודה curl --גרסה לבדוק אם סִלְסוּל מותקן.

במקרה אם סִלְסוּל אינו מותקן, השתמש בשלבים הבאים.

במערכות מבוססות אובונטו ודביאן, להשתמש:

sudo apt-get update
sudo apt-get install curl

ב-RHEL, CentOs ו-Fedora הפצות, להשתמש:

sudo yum install curl

כעת השתמש ב- curl --גרסה הפקודה כדי לוודא שהוא מותקן כהלכה.

curl --גרסה

תְפוּקָה:

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 תאריך שחרור: 2018-01-24 פרוטוקולים: קובץ dict ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp תכונות: AsynchDNS IDN של AsynchDNS IDN של SPRSVNTAP IDN SP libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL gaurav@ubuntu:~$ 

עכשיו אנחנו מוכנים להשתמש ב סִלְסוּל פקודה.

אפשרויות זמינות עם פקודת CURL

תנו לנו תחילה להציץ בכמה מהאפשרויות הבולטות הזמינות עם סִלְסוּל פקודה.

אוֹפְּצִיָהתיאור
-uכדי להוריד קבצים משרת FTP
-Cכדי לחדש הורדה שנקטעה
-oכדי לשמור את התוצאה של סִלְסוּל פקודה עם שם קובץ מוגדר מראש
-אניכדי לקבל את כותרות ה-HTTP של כתובת URL מוגדרת
-אוכדי לשמור את התוצאה של סִלְסוּל פקודה עם שם הקובץ המקורי
--libcurlכדי להוציא את קוד המקור C שמשתמש libcurl עבור האפשרות שצוינה
-איקסכדי להשתמש בפרוקסי כדי לגשת לכתובת האתר
-#כדי להציג את סרגל ההתקדמות כדי להציג את מצב ההורדה

אחזור דף אינטרנט באמצעות CURL

ה סִלְסוּל הפקודה, כשהיא בשימוש ללא כל אפשרות, מביאה את התוכן של כתובת ה-URL שצוינה בפקודה.

תחביר:

סלסול [URL]

דוגמא:

תלתל //allthings.how

תְפוּקָה:

gaurav@ubuntu:~$ curl //allthings.how html{overflow-x:hidden!important}html.i-amphtml-fie{height:100%!important;width:100%!important}html:not([amp4ads ]),html:not([amp4ads]) body{height:auto!important}html:not([amp4ads]) body{margin:0!important}body{-webkit-text-size-adjust:100%;- moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%}html.i-amphtml-singledoc.i-amphtml-embedded{-ms-touch -action:pan-y;touch-action:pan-y}html.i-amphtml-fie>body,html.i-amphtml-singledoc>body{overflow:visible!important}html.i-amphtml-fie:not (.i-amphtml-inabox)>body,html.i-amphtml-singledoc:not(.i-amphtml-inabox)>body{position:relative!important}html.i-amphtml-webview>body{overflow-x :hidden!important;overflow-y:visible!important;min-height:100vh!important}html.i-amphtml-ios-embed-legacy>body{overflow-x:hidden!important;overflow-y:auto!important ;position:absolute!important}html.i-amphtml-ios-embed{overflow-y:auto!important;position:static}#i-amphtml-wrapper{overflow-x:hidden!important;over flow-y:auto!important;position:absolute!important;top:0!important;left:0!important;right:0!important;bottom:0!important;margin:0!important;display:block!important} html.i-amphtml-ios-embed.i-amphtml-ios-overscroll,html.i-amphtml-ios-embed.i-amphtml-ios-overscroll>#i-amphtml-wrapper{-webkit-overflow-scrolling: touch!important}#i-amphtml-wrapper>body{position:relative!important;border-top:1px מוצק שקוף!important}#i-amphtml-wrapper+body{visibility:visible}#i-amphtml-wrapper+body .i-amphtml-lightbox-element,#i-amphtml-wrapper+body[i-amphtml-lightbox]{visibility:hidden}#i-amphtml-wrapper+body[i-amphtml-lightbox] .i-amphtml-lightbox -element{visibility:visible}#i-amphtml-wrapper.i-amphtml-scroll-disabled,.i-amphtml-scroll-disabled{overflow-x:hidden!important;overflow-y:hidden!important}amp-instagram {padding:54px 0px 0px!important;background-color:#fff}amp-iframe iframe{box-sizing:border-box!important}[amp-access][amp-access-hide]{display:none}[מנויים] -dialog],body:not(.i-amphtml-s ubs-ready) [subscriptions-action],body:not(.i-amphtml-subs-ready) [subscriptions-section]{display:none!important}amp-experiment,amp-live-list>[עדכון]{display :none}.i-amphtml-jank-meter{position:fixed;background-color:rgba(232,72,95,0.5);bottom:0;right:0;color:#fff;font-size:16px; z-index:1000;padding:5px}amp-list[resizable-children]>.i-amphtml-loading-container.amp-hidden{display:none!important}amp-list [fetch-error],amp-list [load-more] [load-more-button],amp-list[load-more] [load-more-end],amp-list[load-more] [load-more-failed],amp-list[load -עוד] [load-more-loading]{display:none}amp-list[diffable] div[role=list]{display:block}amp-story-page,amp-story[standalone]{min-height:1px !important;display:block!important;height:100%!important;margin:0!important;padding:0!important;overflow:hidden!important;width:100%!important}מגבר-סיפור[עצמאי]{רקע- color:#202125!important;position:relative!important}amp-story-page{background-color:#757575}amp-story .amp-active>div,amp-story .i-amphtm l-loader-background{display:none!important}amp-story-page:not(:first-of-type):not([distance]):not([active]){transform:translateY(1000vh)!important }amp-autocomplete{position:relative!important;display:inline-block!important}amp-autocomplete>input,amp-autocomplete>textarea{padding:0.5rem;border:1px solid rgba(0,0,0,0.33) }.i-amphtml-autocomplete-results,amp-autocomplete>input,amp-autocomplete>textarea{font-size:1rem;line-height:1.5rem}[amp-fx^=fly-in]{visibility:hidden} amp-script[nodom]{position:fixed!important;top:0!important;width:1px!important;height:1px!important;overflow:hidden!important;visibility:hidden} 

כאן, התוכן של דף האינטרנט נלקח ישירות למסוף שלך כקוד מקור.

אתה יכול להשתמש באפשרויות -o ו -או עם ה סִלְסוּל פקודה לאחסון תוכן זה בקובץ.

מתי -o בשימוש, התוכן של כתובת האתר נשמר בספרייה הנוכחית שלך עם שם קובץ מוגדר על ידי המשתמש.

תחביר:

curl -o [שם_קובץ_משתמש מוגדר] [כתובת אתר]

דוגמא:

gaurav@ubuntu:~/workspace$ curl -o ath.html //allthings.how % סה"כ % שהתקבלו % Xferd מהירות ממוצעת זמן זמן זמן טעינה נוכחית העלאה נוכחית סה"כ הוצאה שמאלה מהירות 100 199k 100 199k 0 0 58743 0 0:00:03 0:00:03 --:--:-- 58743 gaurav@ubuntu:~/workspace$ ls ath.html gaurav@ubuntu:~/workspace$ 

בדוגמה זו, התוכן מכתובת ה-URL 'allthings.how' נשמר כקובץ HTML בשם ath.html בספריית העבודה הנוכחית שלי. בפתיחת קובץ ה-HTML הזה, אני יופנה לדף האינטרנט שנשמר.

הורדת קבצים באמצעות פקודת CURL

משתמש ב -או אפשרות עם הפקודה curl שומרת גם את התוכן או דף האינטרנט או חבילה להורדה כקובץ אך שומרת את הקובץ הזה בשמו המקורי.

הבה נראה זאת באמצעות דוגמה:

דוגמא:

כאן השתמשתי ב- סִלְסוּל פקודה עם -או אפשרות להוריד חבילת אובונטו בשם 'cherrytree_0.37.6-1.1_all.deb' ממאגר החבילות של אובונטו.

gaurav@ubuntu:~/workspace$ curl -O //kr.archive.ubuntu.com/ubuntu/pool/universe/c/cherrytree/cherrytree_0.37.6-1.1_all.deb % סך % התקבלו % Xferd מהירות ממוצעת זמן זמן זמן העלאה נוכחית של העלאה סה"כ הוצאה שמאלה מהירות 100 613k 100 613k 0 0 220k 0 0:00:02 0:00:02 --:--:-- 220k gaurav@ubuntu:~/workspace$

תְפוּקָה:

trinity@ubuntu:~/workspace$ ls ath.html cherrytree_0.37.6-1.1_all.deb trinity@ubuntu:~/workspace$

אז החבילה יורדת כעת ונשמרת בספריית העבודה הנוכחית (CWD) עם השם המקורי שלה.

הצגת סרגל התקדמות בזמן הורדת קובץ

קיים שינוי אסתטי נוסף זמין בעת ​​השימוש ב סִלְסוּל פקודה להורדת קובץ. אתה יכול לראות את התקדמות הורדת הקובץ שלך בצורה של סרגל התקדמות אל הטרמינל שלך. אתה רק צריך לצרף את -# אפשרות עם הפקודה שלך להוריד קובץ.

תן לנו לראות דוגמה של tweak זה.

תחביר:

תלתל -# -O [URL]

דוגמא:

gaurav@ubuntu:~/workspace$ curl -# -O //archive.ubuntu.com/ubuntu/pool/main/e/emacs-defaults/emacs-defaults_47.0.tar.xz ######## ############################################## ############################################## ################################# 100.0% gaurav@ubuntu:~/workspace$ 

תְפוּקָה:

gaurav@ubuntu:~/workspace$ ls ath.html cherrytree_0.37.6-1.1_all.deb emacs-defaults_47.0.tar.xz gaurav@ubuntu:~/workspace$ 

בפלט זה, אתה יכול לראות שהורדתי חבילה בשם 'emacs-defaults_47.0.tar.xz' ב-CWD שלי וסרגל ההתקדמות מוצג בטרמינל בזמן שההורדה הייתה בעיצומה.

חידוש הורדה מופרעת ב-CURL

פעמים רבות, עלול להתרחש מצב שבו אתה צריך להוריד קבצים בגודל גדול יותר. לפעמים בגלל כמה סיבות כמו הפסקת חשמל או כשל ברשת ההורדה עלולה להפסיק באמצע התהליך מבלי להוריד את הקובץ המלא. גם אם תלחץ Ctrl+C בטרמינל, התהליך מופסק.

ה סִלְסוּל הפקודה כאשר משתמשים ב- -C האפשרות ממשיכה את ההורדה שנקטעה.

תחביר:

curl -C - -O [URL]

דוגמא:

באיור זה, ניסיתי להוריד את תמונת אובונטו 20.04 ISO מאתר האינטרנט של אובונטו.

gaurav@ubuntu:~/workspace$ curl -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.1600250702 %Recferde.1600250702 %Recferde.16002507091 %Rec149409%1600250709 זמן זמן זמן העלאה נוכחית העלאה נוכחית הוצאה סה"כ מהירות שמאל 0 2656M 0 1744k 0 0 87038 0 8:53:17 0:00:20 8:52:57 77726^C

כאן, ביטלתי בכוונה את תהליך ההורדה על ידי Ctrl+C.

עכשיו אני אשתמש ב- -C אפשרות עם ה סִלְסוּל פקודה כדי לחדש את ההורדה שנקטעה מאותו אתר מקור.

תְפוּקָה:

gaurav@ubuntu:~/workspace$ curl -C - -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.160202509 מ-Res.46215019 transfer.1602-441911602179.1602-4509 העברה מיקום בתים 1851392 % סה"כ % שהתקבלו Xferd מהירות ממוצעת זמן זמן זמן טעינה נוכחית העלאה נוכחית הוצאה סה"כ מהירות שמאל 0 2654M 0 20.2M 0 0 57940 0 13:20:35 0:06:06 13:14:28 13:14:29 .

ההורדה נאספה מהמקום שבו היא בוטלה.

הורדת קבצים משרת FTP באמצעות CURL

זה די קל עם סִלְסוּל הפקודה להורדת קובץ משרת ה-FTP באמצעות ה -u אוֹפְּצִיָה. עליך להכניס את שם המשתמש והסיסמה לפקודה לפני הזנת כתובת האתר.

תחביר:

curl -u [שם משתמש]:[סיסמה] [כתובת אתר]

לצורך המחשה, אשתמש ב-FTP ציבורי מקוון.

דוגמא:

gaurav@ubuntu:~/workspace$ curl -O -u [email protected]:eUj8GeW55SvYaswqUyDSm5v6N ftp://ftp.dlptest.com/16-Sep-20-16-0-0.csv % % סך % שהתקבלו % Xferd ממוצע מהירות זמן זמן זמן העלאה נוכחית העלאה סה"כ הוצאה שמאלה מהירות 100 390 100 390 0 0 93 0 0:00:04 0:00:04 --:--:-- 93 gaurav@ubuntu:~/workspace$

הנה, הורדתי קובץ בשם '16-Sep-20-16-0-0.csv' משרת ftp זה ושמר אותו עם השם המקורי שלו ב-CWD שלי. אני אבדוק את הקובץ שהורדת באמצעות ה ls פקודה.

gaurav@ubuntu:~/workspace$ ls -al סך הכל 1092 drwxrwxr-x 3 gaurav gaurav 4096 16 בספטמבר 16:15 . drwxr-xr-x 87 gaurav gaurav 266240 16 ספטמבר 10:22 .. -rw-r--r-- 1 gaurav gaurav 390 ספטמבר 16 16:15 16-Sep-20-16-0-0.csv -rw- r--r-- 1 gaurav gaurav 204429 16 בספטמבר 11:45 ath.html gaurav@ubuntu:~/workspace$

הורדת קבצים מרובים יחד באמצעות CURL

הורדת קבצים מרובים בבת אחת באמצעות ה סִלְסוּל פקודה היא משימה פשוטה מאוד. אתה פשוט משתמש ב -או אפשרות עם ה סִלְסוּל פקודה דומה באופן שביצענו בבלוקים לעיל.

תחביר:

curl -O [URL-1] -O [URL-2] -O[URL-n]

דוגמא:

gaurav@ubuntu:~/workspace$ curl -O //archive.ubuntu.com/ubuntu/pool/universe/a/aegean/aegean_0.15.2+dfsg-1.debian.tar.xz -O //archive.ubuntu. com/ubuntu/pool/main/a/apache2/apache2_2.4.29.orig.tar.gz % סה"כ % שהתקבלו Xferd מהירות ממוצעת זמן זמן זמן טעינה נוכחית העלאה נוכחית סה"כ הוצאה שמאלה מהירות 100 63500 100 63500 0 0 55458 0 :01 0:00:01 --:--:-- 55458 100 8436k 100 8436k 0 0 123k 0 0:01:08 0:01:08 --:--:-- 127k gaurav@ubuntu:~/workspace $ 

בדוגמה זו, הורדתי שתי חבילות שונות מהמאגר של אובונטו.

תְפוּקָה:

gaurav@ubuntu:~/workspace$ ls -al סך הכל 9596 drwxrwxr-x 3 gaurav gaurav 4096 16 בספטמבר 16:28 . drwxr-xr-x 87 gaurav gaurav 266240 16 ספטמבר 10:22 .. -rw-r--r-- 1 gaurav gaurav 390 ספטמבר 16 16:15 16-Sep-20-16-0-0.csv -rw- r--r-- 1 gaurav gaurav 63500 16 בספטמבר 16:28 aegean_0.15.2+dfsg-1.debian.tar.xz -rw-r--r-- 1 gaurav gaurav 8638793 16 בספטמבר 16:29 ap.29.4.29. orig.tar.gz -rw-r--r-- 1 gaurav gaurav 204429 16 בספטמבר 11:45 ath.html gaurav@ubuntu:~/workspace$ 

שתי החבילות מורדות בו-זמנית באמצעות פקודת curl.

שליפת כותרות HTTP של כתובת אתר עם CURL

שדות כותרות HTTP של כל כתובת אתר מכילים מידע שימושי כמו סוכן משתמש, סוג תוכן, קידוד וכו'. קובצי כותרות אלו מספקים גם מידע על האובייקט שנשלח בגוף ההודעה. פרטים על הבקשה והתגובה מתקבלים גם מכותרות HTTP אלה.

אתה יכול להשתמש סִלְסוּל פקודה עם -אני אפשרות לקבל כותרות HTTP אלה של כתובת אתר.

תחביר:

curl -I [URL]

דוגמא:

gaurav@ubuntu:~/workspace$ curl -I www.firefox.com HTTP/1.1 200 OK Content-Type: text/html; charset=ISO-8859-1 P3P: CP="זו אינה מדיניות P3P! ראה g.co/p3phelp למידע נוסף." תאריך: יום רביעי, 16 בספטמבר 2020 11:17:00 GMT שרת: gws X-XSS-הגנה: 0 X-Frame-Options: SAMEORIGIN העברה-קידוד: חלקים יפוג: יום ד', 16 בספטמבר 2020 11:17:00 GMT Cache שליטה: קובץ Cookie פרטי: 1P_JAR=2020-09-16-11; expires=שישי, 16-אוקטובר-2020 11:17:00 GMT; path=/; domain=.google.com; סט-קוקי Secure: NID = 204 = SpeHTVXkKYwe6uaKYLsPWmCA0A-sGb94c9jpbw067e7uhyeJnkap6TFEIESztwLOEst7KcDSBLgGrokh1EM2IZi2VPVzllH0tsvCu-QbKiunPoPJ6dD7oAnB7rxu30rAiO630vYm6SG1zbmGgxNEiB-adXp24h7iEoSq9WsjrGg; expires=th', 18-Mar-2021 11:17:00 GMT; path=/; domain=.google.com; HttpOnly gaurav@ubuntu:~/workspace$

בדוגמה זו הבאתי את כותרות ה-HTTP של 'www.firefox.com‘.

שליפת קוד מקור C באמצעות CURL

באמצעות סִלְסוּל פקודה עם ה --libcurl אפשרות יכולה להביא את קוד המקור C. אין לזה שימוש משמעותי למשתמשי ההדיוטות, אבל יכול להוכיח שהוא מועיל מאוד למתכנתי מערכות, מנתחי אבטחה ומפתחי יישומים.

תחביר:

curl [URL] > שם קובץ --libcurl [קוד_קובץ]

דוגמא:

בדוגמה זו, הבאתי את התוכן של כתובת האתר הכל. איך ושמר אותו בקובץ בשם gy_ath.html. קוד המקור C מאוחסן בנפרד ב- source.c קוֹבֶץ.

curl //www.allthings.how > gy_ath.html --libcurl source.c 

תְפוּקָה:

gaurav@ubuntu:~/workspace$ curl //www.allthings.how > gy_ath.html --libcurl source.c % סה"כ % שהתקבלו % Xferd מהירות ממוצעת זמן זמן זמן טעינה נוכחית העלאה נוכחית הוצאה סה"כ מהירות שמאל 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 gaurav@ubuntu:~/workspace$

כעת נבדוק את הקבצים שהורדת.

gaurav@ubuntu:~/workspace$ ls -al סך הכל 404 drwxrwxr-x 3 gaurav gaurav 4096 16 בספטמבר 17:08 . drwxr-xr-x 87 gaurav gaurav 266240 16 בספטמבר 10:22 .. -rw-r--r-- 1 gaurav gaurav 0 16 בספטמבר 17:13 gy_ath.html -rw-r--r-- 1 gaurav 153 gaurav 153 16 בספטמבר 17:13 source.c gaurav@ubuntu:~/workspace$

ה source.c הקובץ מכיל את קוד המקור. ניתן להציג זאת במסוף באמצעות ה- חתול פקודה. שמתי כמה שורות מהפלט בבלוק הנתון למטה.

C sourcegaurav@ubuntu:~/workspace$ cat source.c /********* קוד לדוגמה שנוצר על ידי כלי שורת הפקודה curl ********** * כל האפשרויות curl_easy_setopt() מתועדות בכתובת: * //curl.haxx.se/libcurl/c/curl_easy_setopt.html *********************************** ****************************************/ #include int main(int argc, char *argv[]) { CURLcode ret; CURL *hnd; hnd = curl_easy_init(); curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L); curl_easy_setopt(hnd, CURLOPT_URL, "//www.allthings.how"); curl_easy_setopt(hnd, CURLOPT_USERAGENT, "curl/7.58.0"); curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L);

שימוש בפרוקסי ב-CURL כדי לגשת לכתובת URL

כפי שנדון בהקדמה, ה סִלְסוּל הפקודה תומכת במגוון רחב של פרוטוקולים כמו FTP, SMTP, HTTPS, SOCKS וכו'. לפעמים השימוש בשרת פרוקסי להעברת קבצים הופך להיות חשוב כאשר אתה רוצה לשפר את מהירות ההעברה שלך וגם להגן על הזהות שלך. סִלְסוּל ניתן להשתמש בפקודה בקלות להעברת קבצים דרך שרת ה-proxy על ידי הוספת ה- -איקס אפשרות אליו.

דוגמא:

curl -x [כתובת_proxy]:[יציאה] [URL]

בדוגמה לעיל, הנחתי שה-proxy שלך אינו דורש אימות. במקרה ש-proxy דורש אימות כדי להתחיל את ההעברה, אתה יכול להשתמש בפקודה הבאה.

curl -u [שם משתמש]:[סיסמה] -x [כתובת_proxy]:[יציאה] [URL]

באמצעות שיטה פשוטה זו, אנו יכולים להעביר קבצים דרך שרת פרוקסי עם אפשרות -איקס בשימוש עם ה סִלְסוּל פקודה.

סיכום

במדריך קצר זה למדנו כיצד סִלְסוּל הפקודה מתגלה כמועילה בהורדת תוכן ישירות מהמסוף שלך. למדנו גם על האפשרויות השונות הזמינות בפקודה זו לשימוש עבור משימות שונות.