10 wget командни примери, които да ви помогнат при отстраняване на проблеми

Една от често използваните програми от sysadmin е wget. Тя може да бъде много удобна по време на мрежовото отстраняване на проблеми.


Какво е команда wget?

wget командата е популярна програма за команден ред Unix / Linux за извличане на съдържание от мрежата. Той е безплатен за използване и предоставя неинтерактивен начин за изтегляне на файлове от мрежата. Командата wget поддържа HTTPS, HTTP и FTP протоколи извън кутията. Освен това можете да използвате и HTTP прокси сървъри с него.

Как ви помага да отстраните проблеми?

Има много начини.

Като sysadmin през повечето време ще работите върху терминал и при отстраняване на проблеми, свързани с уеб приложения, може да не искате да проверявате цялата страница, а само свързаността. Или искате да потвърдите интранет уебсайтове. Или искате да изтеглите определена страница, за да проверите съдържанието.

wget е неинтерактивен, което означава, че можете да го стартирате във фонов режим, дори когато сте излезли от системата. Може да има много случаи, когато е от съществено значение да прекъснете връзката със системата, дори когато правите извличане на файлове от мрежата. На заден план wget ще работи и ще завърши зададената им работа.

Може да се използва и за получаване на целия уебсайт на вашите местни машини. Тя може да следва връзки във XHTML и HTML страници за създаване на локална версия. За целта трябва да изтегли страницата рекурсивно. Това е много полезно, тъй като можете да го използвате за изтегляне на важни страници или сайтове за офлайн гледане.

Нека ги видим в действие. Синтаксисът на wget е както е показано по-долу.

wget [опция] [URL]

Изтеглете уеб страница

Нека се опитаме да изтеглите страница. Например: github.com

wget github.com

Ако връзката е добре, тогава тя ще изтегли началната страница и ще покаже изхода както по-долу.

[Имейл защитен]: ~ # wget github.com
URL адрес, трансформиран в HTTPS поради HSTS политика
–2020-02-23 10: 45: 52– https://github.com/
Решаване на github.com (github.com) … 140.82.118.3
Свързване към github.com (github.com) | 140.82.118.3 |: 443 … свързано.
HTTP заявка е изпратена, чака се отговор … 200 OK
Дължина: неуточнена [текст / html]
Запазване в: „index.html“

index.html [ <=> ] 131.96K –.- KB / s за 0.04s

2020-02-23 10:45:52 (2.89 MB / s) – „index.html“ е запазен [135126]

[Имейл защитен]: ~ #

Изтеглете няколко файла

Удобно е, когато трябва да изтеглите няколко файла наведнъж. Това може да ви даде представа за автоматизиране на изтеглянето на файлове чрез някои скриптове.

Нека се опитаме да изтеглим Python 3.8.1 и 3.5.1 файлове.

wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz https://www.python.org/ftp/python/3.5.1/Python-3.5.1. TGZ

И така, както се досещате, синтаксисът е както е по-долу.

wget URL1 URL2 URL3

Просто трябва да осигурите място между URL адресите.

Ограничете скоростта на изтегляне

Би било полезно, когато искате да проверите колко време отнема файлът ви за изтегляне с различна честотна лента.

Използвайки опцията –limit-rate, можете да ограничите скоростта на изтегляне.

Ето изхода от изтеглянето на файла Nodejs.

[Имейл защитен]: ~ # wget https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
–2020-02-23 10: 59: 58– https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
Разрешаване на nodejs.org (nodejs.org) … 104.20.23.46, 104.20.22.46, 2606: 4700: 10 :: 6814: 162e, …
Свързване към nodejs.org (nodejs.org) | 104.20.23.46 |: 443 … свързано.
HTTP заявка е изпратена, чака се отговор … 200 OK
Дължина: 14591852 (14M) [приложение / x-xz]
Запазване в: „node-v12.16.1-linux-x64.tar.xz“

node-v12.16.1-linux-x64.tar.xz 100% [==================================== ================================================== =======>] 13.92M –.- KB / s за 0.05s

2020-02-23 10:59:58 (272 MB / s) – „node-v12.16.1-linux-x64.tar.xz“ записан [14591852/14591852]

Отне 0,05 секунди, за да изтеглите 13,92 MB файлове. Сега, нека се опитаме да ограничим скоростта до 500K.

[Имейл защитен]: ~ # wget –limit-rate = 500k https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
–2020-02-23 11: 00: 18– https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
Разрешаване на nodejs.org (nodejs.org) … 104.20.23.46, 104.20.22.46, 2606: 4700: 10 :: 6814: 162e, …
Свързване към nodejs.org (nodejs.org) | 104.20.23.46 |: 443 … свързано.
HTTP заявка е изпратена, чака се отговор … 200 OK
Дължина: 14591852 (14M) [приложение / x-xz]
Запазване в: „node-v12.16.1-linux-x64.tar.xz.1“

node-v12.16.1-linux-x64.tar.xz.1 100% [================================== ================================================== =========>] 13.92M 501KB / s за 28s

2020-02-23 11:00:46 (500 KB / s) – „node-v12.16.1-linux-x64.tar.xz.1“ записан [14591852/14591852]

Намаляването на честотната лента отне повече време за изтегляне – 28 секунди. Представете си, вашите потребители се оплакват от бавно изтегляне и знаете, че тяхната мрежова честотна лента е ниска. Можете бързо да опитате –limit-rate, за да симулирате проблема.

Изтеглете във фонов режим

Изтеглянето на големи файлове може да отнеме време или горния пример, където искате да зададете и ограничението за скорост. Това се очаква, но какво ще стане, ако не искате да се взирате в терминала си?

Е, можете да използвате аргумент -b, за да стартирате wget във фонов режим.

[Имейл защитен]: ~ # wget -b https://slack.com
Продължаване на заден план, pid 25430.
Резултатите ще бъдат написани на „wget-log.1“.
[Имейл защитен]: ~ #

Игнорира грешка в сертификата

Това е удобно, когато трябва да проверите интранет уеб приложения, които нямат подходящ сертификат. По подразбиране wget ще хвърли грешка, когато сертификатът не е валиден.

[Имейл защитен]: ~ # wget https://expired.badssl.com/
–2020-02-23 11: 24: 59– https://expired.badssl.com/
Разрешаването е изтекло.badssl.com (изтекло.badssl.com) … 104.154.89.105
Свързване към изтичащ.badssl.com (изтекла.badssl.com) | 104.154.89.105 |: 443 … свързан.
ГРЕШКА: не може да се потвърди сертификатът с изтекъл срок на годност.badssl.com, издаден от „CN = COMODO RSA Валидиране на домейн Secure Server CA, O = COMODO CA Limited, L = Salford, ST = по-голям Манчестър, C = GB“:
Издаденият сертификат е изтекъл.
За да се свържете с изтекъл срок.badssl.com несигурно, използвайте `–no-check-сертификат ‘.

Горният пример е за URL адреса, където cert е с изтекъл срок. Както можете да видите, той предлага да се използва –no-check-сертификат, който ще игнорира всяка проверка на сертификат.

[Имейл защитен]: ~ # wget https://untrusted-root.badssl.com/ –no-check-сертификат
–2020-02-23 11: 33: 45– https://untrusted-root.badssl.com/
Решаване на untrusted-root.badssl.com (untrusted-root.badssl.com) … 104.154.89.105
Свързване към untrusted-root.badssl.com (untrusted-root.badssl.com) | 104.154.89.105 |: 443 … свързан.
ВНИМАНИЕ: не може да провери сертификата на neprusted-root.badssl.com, издаден от „CN = BadSSL Untrusted Root Certificate Authority, O = BadSSL, L = Сан Франциско, ST = Калифорния, C = САЩ“:
Среща се самоподписан сертификат.
HTTP заявка е изпратена, чака се отговор … 200 OK
Дължина: 600 [текст / html]
Запазване в: „index.html.6“

index.html.6 100% [============================================ =================================================>] 600 –.- KB / s за 0s

2020-02-23 11:33:45 (122 MB / s) – „index.html.6“ е запазен [600/600]

[Имейл защитен]: ~ #

Готино, нали??

HTTP заглавие на отговор

Вижте заглавката на отговора на HTTP на даден сайт на терминала.

Използването на -S ще отпечата заглавката, както можете да видите по-долу за Корсера.

[Имейл защитен]: ~ # wget https://www.coursera.org -S
–2020-02-23 11: 47: 01– https://www.coursera.org/
Решаване на www.coursera.org (www.coursera.org) … 13.224.241.48, 13.224.241.124, 13.224.241.82, …
Свързване към www.coursera.org (www.coursera.org) | 13.224.241.48 |: 443 … свързано.
HTTP заявка изпратена, в очакване на отговор…
HTTP / 1.1 200 OK
Тип на съдържанието: текст / html
Дължина на съдържанието: 511551
Връзка: поддържайте жив
Кеш-контрол: частен, без кеш, няма магазин, трябва да се превалира, max-age = 0
Дата: Слънце, 23 февруари 2020 г. 11:47:01 GMT
етаг: W /"7156d-WcZHnHFl4b4aDOL4ZSrXP0iBX3o"
Сървър: пратеник
Set-Cookie: CSRF3-Token = 1583322421.s1b4QL6OXSUGHnRI; Max-възраст = 864 000; Изтича = Сря, 04 март 2020 11:47:02 GMT; Path = /; Домейн = .coursera.org
Set-Cookie: __204u = 9205355775-1582458421174; Max-Години = 31536000; Изтича = Mon, 22 Feb 2021 11:47:02 GMT; Path = /; Домейн = .coursera.org
Строга транспортна сигурност: максимална възраст = 31536000; includeSubDomains; натоварването
Опции за X-Content-Type: nosniff
x-coursera-render-mode: html
x-coursera-render-version: v2
X-Coursera-Request-Id: NCnPPlYyEeqfcxIHPk5Gqw
X-Coursera-Trace-Id-Hex: a5ef7028d77ae8f8
x-пратеник-нагоре по време на обслужване: 1090
Опции за X-Frame: SAMEORIGIN
x-захранвано от: Express
X-XSS-защита: 1; режим = блок
X-кеш: Мис от облака
Via: 1.1 884d101a3faeefd4fb32a5d2a8a076b7.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: LHR62-C3
X-Amz-Cf-Id: vqvX6ZUQgtZAde62t7qjafIAqHXQ8BLAv8UhkPHwyTMpvH617yeIbQ ==
Дължина: 511551 (500K) [текст / html]

Манипулирайте потребителския агент

Възможно е да възникне ситуация, в която искате да свържете сайт с помощта на персонализиран потребителски агент. Или конкретен потребителски агент на браузъра. Това е възможно, като посочите –user-agent. По-долу примерът е за потребителския агент като MyCustomUserAgent.

[Имейл защитен]: ~ # wget https://gf.dev –user-agent ="MyCustomUserAgent"

Заглавие на домакина

Когато приложение все още се разработва, може да нямате подходящ URL адрес, за да го тествате. Или може да искате да тествате отделен HTTP екземпляр, използвайки IP, но трябва да предоставите заглавния хост на приложението, за да работи правилно. В тази ситуация –header би бил полезен.

Да вземем пример за тестване на http://10.10.10.1 с хедър заглавието като application.com

wget –header ="Водещ: application.com" http://10.10.10.1

Не само хост, но можете да инжектирате всяко заглавие, което харесвате.

Свържете се чрез Proxy

Ако работите в среда на DMZ, може да нямате достъп до интернет сайтове. Но можете да се възползвате от прокси за свързване.

wget -e use_proxy = да http_proxy = $ PROXYHOST: PORT http://externalsite.com

Не забравяйте да актуализирате променлива $ PROXYHOST: PORT с действителните.

Свържете се с помощта на специфичен TLS протокол

Обикновено бих препоръчал да използвате OpenSSL за тестване на TLS протокола. Но, можете да използвате и wget.

wget –secure-Protocol = TLSv1_2 https://example.com

Горното ще принуди wget да се свърже през TLS 1.2.

заключение

Познаването на необходимата команда може да ви помогне в работата. Надявам се, че горното ви дава представа какво можете да направите с wget.

ЕТИКЕТИ:

  • Linux

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map