
دستورالعمل لینوکس curl می تواند خیلی بیشتر از فایلهای بارگیری انجام دهد. دریابید که [حلقه حلقه چه توانایی دارد و چه زمانی باید به جای ویجت استفاده کنید.
حلقه در مقابل wget : تفاوت چیست؟
مردم غالباً در تلاش برای شناسایی نقاط قوت نسبی دستورات wget و curl هستند . این دستورات با هم همپوشانی دارند. هرکدام می توانند فایلها را از مکانهای از راه دور بازیابی کنند ، اما این جایی است که شباهت به پایان می رسد.
wget ابزاری فوق العاده برای بارگیری محتوا و پرونده ها است. این می تواند پرونده ها ، صفحات وب و دایرکتوری ها را بارگیری کند. این برنامه شامل روالهای هوشمند برای گذر از پیوندها در صفحات وب و بارگیری به صورت بازگشتی مطالب در کل وب سایت است. این به عنوان یک مدیر بارگیری در خط فرمان بی نظیر است.
حلقه یک نیاز کاملاً متفاوت را برآورده می کند. بله ، می تواند پرونده ها را بازیابی کند ، اما نمی تواند به صورت بازگشتی به وب سایت هدایت شود که به دنبال محتوا برای بازیابی است. آنچه حلقه را در واقع انجام می دهد این است که با ایجاد درخواست به آن سیستم ها ، با سیستم های از راه دور ارتباط برقرار می کنید و پاسخ های آنها را برای شما بازیابی و نمایش می دهید. این پاسخ ها ممکن است محتوا و پرونده های صفحه وب باشد ، اما همچنین می توانند داده های ارسالی از طریق یک سرویس وب یا API را در نتیجه "سؤالی" که توسط درخواست curl پرسیده شده باشد ، ارائه دهند.
و curl فقط به وب سایت محدود نمی شود. حلقه بیش از 20 پروتکل ، از جمله HTTP ، HTTPS ، SCP ، SFTP و FTP را پشتیبانی می کند. و مسلماً به دلیل استفاده برتر از لوله های لینوکس ، curl می تواند به راحتی با سایر دستورات و اسکریپت ها یکپارچه شود.
نویسنده curl دارای یک صفحه وب است که تفاوت ها را شرح می دهد. وی بین حلقه و wget را می بیند.
نصب حلقه
از رایانه هایی که برای تحقیق در مورد این مقاله استفاده می کردند ، Fedora 31 و Manjaro 18.1.0 حلقه داشتند قبلاً نصب شده است. حلقه باید در اوبونتو 18.04 LTS نصب شود. روی اوبونتو ، این دستور را نصب کنید تا آن را نصب کنید:
sudo apt-get curl install
نسخه curl
– - نسخه گزینه باعث می شود curl نسخه خود را گزارش کند. همچنین پروتکل های پشتیبانی شده خود را لیست می کند.
curl --version
بازیابی یک صفحه وب
اگر ما curl ] در یک صفحه وب ، آن را برای ما بازیابی می کند.
curl https://www.پراکسی.com
حلقه کنید. اقدام پیش فرض آن پرتاب آن به عنوان کد منبع به پنجره ترمینال است.
مراقب باشید : به حلقه کن را بخواهید که می خواهید چیزی به عنوان پرونده ذخیره شود ، همیشه آن را به پنجره ترمینال می اندازد. اگر پرونده ای که در حال بازیابی است یک پرونده باینری باشد ، نتیجه می تواند غیرقابل پیش بینی باشد. پوسته ممکن است سعی کند برخی از مقادیر بایت موجود در پرونده باینری را به عنوان شخصیت های کنترل یا توالی فرار تفسیر کند.
ذخیره داده ها در یک پرونده
بیایید به curl بگوییم که خروجی را به یک فایل تغییر مسیر دهد:
curl https: //www.پراکسی.com> پراکسی.html
این بار ما اطلاعات بازیابی شده را نمی بینیم ، مستقیماً برای ما برای پرونده ارسال می شود از آنجا که هیچ نمایشگاهی از پنجره ترمینال برای نمایش وجود ندارد ، curl مجموعه ای از اطلاعات مربوط به پیشرفت را ارائه می دهد.
این در مثال قبلی این کار را انجام نمی داد زیرا اطلاعات مربوط به پیشرفت می توانست در منبع صفحه وب پراکنده باشد. کد ، بنابراین حلقه به طور خودکار آن را سرکوب کرد.
در این مثال ، curl تشخیص می دهد که خروجی به یک فایل هدایت می شود و از تولید اطلاعات پیشرفت بی خطر است. [19659008]
اطلاعات ارائه شده عبارتند از:
- ٪ Total : کل مبلغ مورد بازیابی.
- ٪ دریافت : درصد و مقادیر واقعی داده های بازیابی شده تاکنون.
- ٪ Xferd : در صورت بارگذاری داده ها ، درصد و واقعی ارسال می شود.
- میانگین سرعت بارگذاری : میانگین سرعت بارگیری.
- متوسط بارگذاری سرعت : میانگین سرعت بارگذاری.
- تعداد کل زمان : مدت زمان کل انتقال تخمین زده شده است.
- زمان سپری شده : مدت زمان سپری شده برای این انتقال.
- Time Left : زمان تخمینی برای انتقال برای تکمیل [19659035] سرعت فعلی : سرعت انتقال فعلی برای این انتقال.
از آنجا که ما خروجی را از curl به یک پرونده هدایت کردیم ، اکنون پرونده ای با عنوان "پراکسی.html" داریم.
با دوبار کلیک کردن روی آن فایل ، مرورگر پیش فرض شما باز خواهد شد تا صفحه وب بازیابی شده را نشان دهد.
توجه داشته باشید که آدرس موجود در نوار آدرس مرورگر یک فایل محلی در این رایانه است ، نه یک وب سایت راه دور.
برای ایجاد یک خروجی لازم نیست را تغییر دهیم . فایل. ما می توانیم با استفاده از گزینه -o (خروجی) ، و گفتن curl را برای ایجاد پرونده ایجاد کنیم. در اینجا ما از گزینه -o استفاده می کنیم و نام پرونده مورد نظر برای ایجاد "پراکسی.html" را ارائه می دهیم.
curl -o پراکسی.html https://www.پراکسی.com
با استفاده از نوار پیشرفت برای نظارت بر بارگیری
تا اطلاعات بارگیری متن مبتنی بر متن ساده جایگزین شود نوار پیشرفت ، از گزینه - # (نوار پیشرفت) استفاده کنید.
curl -x -o پراکسی.html https://www.پراکسی.com
راه اندازی مجدد بارگیری مجدد
مجدداً بارگیری مجدد بارگیری که خاتمه یافته یا قطع شده است ، آسان است. بیایید بارگیری یک پرونده با اندازه را شروع کنیم. ما از آخرین ساخت بلند مدت پشتیبانی اوبونتو 18.04 استفاده خواهیم کرد. ما از گزینه - output برای مشخص کردن نام پرونده ای که می خواهیم آن را ذخیره کنیم استفاده می کنیم: "ubuntu180403.iso."
curl --output ubuntu18043.iso http: // انتشار .ubuntu.com / 18.04.3 / ubuntu-18.04.3-desktop-amd64.iso
بارگیری شروع می شود و کار خود را به اتمام می رساند.
اگر به زور قطع کنیم بارگیری با Ctrl + C ، ما به صفحه فرمان بازگردانده می شویم ، و بارگیری آن متوقف می شود.
برای راه اندازی مجدد بارگیری ، از -C استفاده کنید (در ادامه) گزینه. این باعث می شود که curl بارگیری مجدد را در یک نقطه مشخص یا جبران در پرونده هدف مجدداً آغاز کند. اگر از یک hyphen - به عنوان افست استفاده می کنید ، curl بخشی از بارگیری شده در فایل را بررسی می کند و جبران صحیحی برای استفاده برای خود را تعیین می کند.
curl-C - --output ubuntu18043.iso http://releases.ubuntu.com/18.04.3/ubuntu-18.04.3-desktop-amd64.isoociation19659064LOADcurl -C - --output ubuntu18043.iso http: // نسخه. ubuntu.com/18.04.3/ubuntu-18.04.3-desktop-amd64.iso پنجره ترمینال اینا " width="646" height="77" src="/pagespeed_static/1.JiBnMqyl6S.gif" onload="pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);" onerror="this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);"/>بارگیری مجدداً آغاز شد.
curlجبران خاموشي را كه در آن دوباره راه اندازي شده است را گزارش مي كند.
![]()
بازیابی عناوین HTTP
با گزینه
-I(head) ، می توانید فقط هدرهای HTTP را بازیابی کنید. این همان ارسال فرمان HTTP HEAD به یک سرور وب است.curl -I www.twitter.com
![]()
این دستور بازیابی می شود فقط اطلاعات؛ هیچ صفحه وب یا پرونده ای بارگیری نمی شود.
![]()
بارگیری URL های چندگانه
با استفاده از
xargsما می توانیم چندین URL را به طور همزمان بارگیری کنیم. شاید بخواهیم یک سری صفحه وب را بارگیری کنیم که یک مقاله یا آموزش واحد را تشکیل می دهد.این URL ها را در یک ویرایشگر کپی کنید و آن را در پرونده ای بنام "urls-to-download.txt" ذخیره کنید. ما می توانیم از
xargsبرای درمان محتوای هر سطر از متن متن به عنوان پارامتری که آن را بهحلقهمی دهد ، به نوبه خود.https://tutorials.ubuntu.com/tutorial/ آموزش-ایجاد-یک-USB-stick-on-ubuntu # 0 https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#1 https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#2 https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#3 https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#4 https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#5ociation19659077 ناب این دستور دستوری است که ما باید برای عبور ازxargsاین آدرس ها بهحلقهیک بار یک بار:xargs -n 1 curl -O <urls-to-download.txtتوجه داشته باشید که این دستور از
-O(از راه دور پرونده) دستور خروجی ، که از یک حرف بزرگ "O." استفاده می کند. این گزینه باعث می شودcurlفایل بازیابی شده را با همان نام موجود در پرونده روی سرور راه دور ذخیره کند.
گزینه 1بهxargsمی دهد تا هر خط از فایل متنی را به عنوان یک پارامتر واحد درمان کنید.وقتی دستور را اجرا می کنید ، مشاهده می کنید بارگیری های متعدد شروع و پایان ، یکی پس از دیگری.
![]()
بررسی در مرورگر پرونده نشان می دهد که چندین فایل بارگیری شده اند. هرکدام نام خود را روی سرور از راه دور دارد.
![]()
ارتباط: نحوه استفاده از دستور xargs در لینوکس
بارگیری پرونده ها از سرور FTP
استفاده از
حلقهبا یک سرور پروتکل انتقال فایل (FTP) سرور آسان است ، حتی اگر مجبور باشید با نام کاربری و رمزعبور احراز هویت کنید. برای گذراندن نام کاربری و رمز عبور باحلقهاز گزینه-u(user) استفاده کنید و نام کاربری ، یک کلمه “:” و رمز را وارد کنید. فضایی را قبل یا بعد از روده بزرگ قرار ندهید.این یک سرور FTP برای آزمایش رایگان است که توسط Rebex میزبانی می شود. سایت FTP دارای یک نام کاربری از پیش تعیین شده "نسخه ی نمایشی" است و رمز عبور "رمز عبور" است. از این نوع نام کاربری و رمز عبور ضعیف در سرور FTP تولیدی یا "واقعی" استفاده نکنید.
curl -u نسخه ی نمایشی: password ftp://test.rebex.netcurl -u demo: demo ftp://test.rebex.net در یک پنجره ترمینال " width="646" height="57" src="/pagespeed_static/1.JiBnMqyl6S.gif" onload="pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);" onerror="this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);"/>
curlما آن را به یک سرور FTP نشان می دهیم ، و لیستی از پرونده های موجود در سرور را برمی گردانیم.
![]()
تنها پرونده در این سرور یک پرونده "readme.txt" با طول 403 بایت وجود دارد. بیایید آن را بازیابی کنیم. از همان دستور لحظه قبل استفاده کنید ، با نام پرونده ای که به آن پیوست شده است:
curl -u demo: demo ftp://test.rebex.net/readme.txtociation19659077LOADociation19459069 ftp://test.rebex.net/readme.txt در یک پنجره ترمینال " width="646" height="77" src="/pagespeed_static/1.JiBnMqyl6S.gif" onload="pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);" onerror="this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);"/>پرونده بازیابی می شود و
curlمحتوای آن را در پنجره ترمینال نمایش می دهد.
![]()
تقریباً در همه موارد ، به جای اینکه در پنجره ترمینال نمایش داده شود ، راحت تر می توان فایل بازیابی شده را برای ما ذخیره کرد. . یکبار دیگر می توانیم از دستور خروجی
-O(پرونده از راه دور) استفاده کنیم تا پرونده در دیسک ذخیره شود ، با همان نام خانوادگی که در سرور از راه دور دارد.curl-O-demo demo: رمز عبور ftp://test.rebex.net/readme.txtociation19659077 هوادار 19459073 معروفcurl -O -u نسخه ی نمایشی: پسورد ftp://test.rebex.net/readme.txt در یک پنجره ترمینال " width="646" height="77" src="/pagespeed_static/1.JiBnMqyl6S.gif" onload="pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);" onerror="this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);"/> [19659008] پرونده بازیابی و در دیسک ذخیره می شود. برای بررسی جزئیات پرونده می توانیم ازlsاستفاده کنیم. این اسم را با همان پرونده در سرور FTP دارد و به همان طول ، 403 بایت است.ls -hl readme.txt
![]()
ارتباط: نحوه استفاده از فرمان FTP در لینوکس
ارسال پارامترها به سرورهای از راه دور
برخی از سرورهای از راه دور پارامترهایی را در درخواستهایی که برای آنها ارسال می شود قبول می کنند. . به عنوان مثال ممکن است از پارامترها برای قالب بندی داده های برگشتی استفاده شود یا از آنها برای انتخاب داده های دقیقی که کاربر می خواهد بازیابی کند استفاده می شود. تعامل با رابط های برنامه نویسی برنامه وب (API) اغلب با استفاده از
curlممکن است.به عنوان یک مثال ساده ، وب سایت ipify دارای API است که می توانید برای تعیین آدرس IP خارجی خود درخواست کنید.
curl https://api.ipify.orgبا اضافه کردن پارامتر
به دستور ، با مقدار "json" می توانیم دوباره آدرس IP خارجی خود را درخواست کنیم ، اما این بار داده های برگشتی در قالب JSON رمزگذاری خواهد شد.حلقه https://api.ipify.org؟format=jsonociation19659077 قراردادن19459077bowcurl https://api.ipify.org در یک پنجره ترمینال " width="646" height="122" src="/pagespeed_static/1.JiBnMqyl6S.gif" onload="pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);" onerror="this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);"/> [19659008] یک مثال دیگر که استفاده از API Google را ارائه می دهد. این یک موضوع JSON را توصیف می کند که یک کتاب را توصیف می کند. پارامتری که باید ارائه دهید ، شماره کتاب استاندارد بین المللی (ISBN) یک کتاب است. می توانید این موارد را در پشت جلد اکثر کتاب ها ، معمولاً در زیر بارکد پیدا کنید. پارامتری که در اینجا از آن استفاده خواهیم کرد "0131103628" است.https://www.googleapis.com/books/v1/volumes؟q=isbn:0131103628 موفق19659077- غلط 19459079pozcurl https:// www. googleapis.com/books/v1/volumes؟q=isbn:0131103628 در یک پنجره ترمینال " width="646" height="77" src="/pagespeed_static/1.JiBnMqyl6S.gif" onload="pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);" onerror="this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);"/>داده های برگردان جامع است:
[19659010] گاهی اوقات مجعد ، گاهی ویجت
اگر می خواستم محتوا را از وب سایت بارگیری کنم و ساختار درخت وب سایت را بطور بازگشتی برای آن محتوا جستجو کنم ، می خواهم از
wgetاستفاده کنم.اگر من می خواستم با یک سرور از راه دور یا API ارتباط برقرار کنم و احتمالاً برخی از فایل ها یا صفحات وب را بارگیری کنم ، می خواهم از
حلقهاستفاده کنم. به خصوص اگر پروتکل یکی از موارد بسیاری بود که توسطwgetپشتیبانی نمی شد.