10 прикладів команд wget, які допоможуть вам усунути неполадки – Тест wget

Однією з часто використовуваних утиліт системним адміністратором є wget. Це може бути дуже зручно під час усунення несправностей, пов’язаних з Інтернетом.

Що таке команда wget?

Команда wget — популярна утиліта командного рядка Unix/Linux для отримання вмісту з Інтернету. Він безкоштовний для використання та забезпечує неінтерактивний спосіб завантаження файлів з Інтернету. Команда wget підтримує протоколи HTTPS, HTTP та FTP із коробки. Крім того, ви також можете використовувати з ним HTTP-проксі.

Як wget допомагає у вирішенні проблем?

Способів багато.

Як системний адміністратор, більшу частину часу ви працюватимете на терміналі, і, вирішуючи проблеми, пов’язані з веб-програмою, ви можете не перевіряти всю сторінку, а лише з’єднання. Або ви хочете перевірити веб-сайти внутрішньої мережі. Або ви хочете завантажити певну сторінку, щоб перевірити вміст.

wget є неінтерактивним, що означає, що ви можете запускати його у фоновому режимі, навіть якщо ви вийшли з системи. Може бути багато випадків, коли вам необхідно від’єднатися від системи, навіть якщо ви виконуєте пошук файлів з Інтернету. У фоновому режимі wget запуститься та завершить призначену роботу.

Його також можна використовувати, щоб отримати весь веб-сайт на ваших локальних машинах. Він може переходити за посиланнями на сторінках XHTML і HTML, щоб створити локальну версію. Для цього сторінку потрібно завантажити рекурсивно. Це дуже корисно, оскільки ви можете використовувати його для завантаження важливих сторінок або сайтів для перегляду в режимі офлайн.

Давайте подивимося на них у дії. Синтаксис wget наведено нижче.

wget [option] [URL]

Завантажте веб-сторінку

Давайте спробуємо завантажити сторінку. Наприклад: github.com

wget github.com

Якщо з’єднання в порядку, буде завантажено домашню сторінку та відображено результат, як показано нижче.

[email protected]:~# wget github.com
URL transformed to HTTPS due to an HSTS policy
--2020-02-23 10:45:52--  https://github.com/
Resolving github.com (github.com)... 140.82.118.3
Connecting to github.com (github.com)|140.82.118.3|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘index.html’

index.html                                       [ <=>                                                                                        ] 131.96K  --.-KB/s    in 0.04s   

2020-02-23 10:45:52 (2.89 MB/s) - ‘index.html’ saved [135126]

[email protected]:~#

Завантажте декілька файлів

Зручно, коли потрібно завантажити кілька файлів одночасно. Це може дати вам уявлення про автоматизацію завантаження файлів за допомогою деяких сценаріїв.

  Як запланувати повідомлення на Slack

Давайте спробуємо завантажити файли 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.

[email protected]:~# 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
Resolving nodejs.org (nodejs.org)... 104.20.23.46, 104.20.22.46, 2606:4700:10::6814:162e, ...
Connecting to nodejs.org (nodejs.org)|104.20.23.46|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14591852 (14M) [application/x-xz]
Saving to: ‘node-v12.16.1-linux-x64.tar.xz’

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

2020-02-23 10:59:58 (272 MB/s) - ‘node-v12.16.1-linux-x64.tar.xz’ saved [14591852/14591852]

Для завантаження файлів розміром 13,92 МБ знадобилося 0,05 секунди. Тепер давайте спробуємо обмежити швидкість до 500K.

[email protected]:~# 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
Resolving nodejs.org (nodejs.org)... 104.20.23.46, 104.20.22.46, 2606:4700:10::6814:162e, ...
Connecting to nodejs.org (nodejs.org)|104.20.23.46|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14591852 (14M) [application/x-xz]
Saving to: ‘node-v12.16.1-linux-x64.tar.xz.1’

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

2020-02-23 11:00:46 (500 KB/s) - ‘node-v12.16.1-linux-x64.tar.xz.1’ saved [14591852/14591852]

Зменшення пропускної здатності займало більше часу для завантаження – 28 секунд. Уявіть, ваші користувачі скаржаться на повільне завантаження, а ви знаєте, що пропускна здатність їхньої мережі низька. Ви можете швидко спробувати –limit-rate, щоб імітувати проблему.

  Що таке Додатковий захист Google і кому його використовувати?

Завантажити у фоновому режимі

Завантаження великих файлів може зайняти час або наведений вище приклад, де також потрібно встановити обмеження швидкості. Це очікувано, але що, якщо ви не хочете дивитися на свій термінал?

Добре, ви можете використовувати аргумент -b, щоб запустити wget у фоновому режимі.

[email protected]:~# wget -b https://slack.com
Continuing in background, pid 25430.
Output will be written to ‘wget-log.1’.
[email protected]:~#

Ігнорувати помилку сертифіката

Це зручно, коли вам потрібно перевірити веб-програми внутрішньої мережі, які не мають належного сертифіката. За замовчуванням wget видасть помилку, якщо сертифікат недійсний.

[email protected]:~# wget https://expired.badssl.com/
--2020-02-23 11:24:59--  https://expired.badssl.com/
Resolving expired.badssl.com (expired.badssl.com)... 104.154.89.105
Connecting to expired.badssl.com (expired.badssl.com)|104.154.89.105|:443... connected.
ERROR: cannot verify expired.badssl.com's certificate, issued by ‘CN=COMODO RSA Domain Validation Secure Server CA,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB’:
  Issued certificate has expired.
To connect to expired.badssl.com insecurely, use `--no-check-certificate'.

Наведений вище приклад стосується URL-адреси, термін дії сертифіката якого минув. Як бачите, пропонується використовувати –no-check-certificate, який ігноруватиме перевірку сертифіката.

[email protected]:~# wget https://untrusted-root.badssl.com/ --no-check-certificate
--2020-02-23 11:33:45--  https://untrusted-root.badssl.com/
Resolving untrusted-root.badssl.com (untrusted-root.badssl.com)... 104.154.89.105
Connecting to untrusted-root.badssl.com (untrusted-root.badssl.com)|104.154.89.105|:443... connected.
WARNING: cannot verify untrusted-root.badssl.com's certificate, issued by ‘CN=BadSSL Untrusted Root Certificate Authority,O=BadSSL,L=San Francisco,ST=California,C=US’:
  Self-signed certificate encountered.
HTTP request sent, awaiting response... 200 OK
Length: 600 [text/html]
Saving to: ‘index.html.6’

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

2020-02-23 11:33:45 (122 MB/s) - ‘index.html.6’ saved [600/600]

[email protected]:~#

Круто, чи не так?

Перегляньте заголовок відповіді HTTP певного сайту на терміналі.

Використання -S надрукує заголовок, як ви можете бачити нижче для Coursera.

[email protected]:~# wget https://www.coursera.org -S
--2020-02-23 11:47:01--  https://www.coursera.org/
Resolving www.coursera.org (www.coursera.org)... 13.224.241.48, 13.224.241.124, 13.224.241.82, ...
Connecting to www.coursera.org (www.coursera.org)|13.224.241.48|:443... connected.
HTTP request sent, awaiting response... 
  HTTP/1.1 200 OK
  Content-Type: text/html
  Content-Length: 511551
  Connection: keep-alive
  Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0
  Date: Sun, 23 Feb 2020 11:47:01 GMT
  etag: W/"7156d-WcZHnHFl4b4aDOL4ZSrXP0iBX3o"
  Server: envoy
  Set-Cookie: CSRF3-Token=1583322421.s1b4QL6OXSUGHnRI; Max-Age=864000; Expires=Wed, 04 Mar 2020 11:47:02 GMT; Path=/; Domain=.coursera.org
  Set-Cookie: __204u=9205355775-1582458421174; Max-Age=31536000; Expires=Mon, 22 Feb 2021 11:47:02 GMT; Path=/; Domain=.coursera.org
  Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
  X-Content-Type-Options: nosniff
  x-coursera-render-mode: html
  x-coursera-render-version: v2
  X-Coursera-Request-Id: NCnPPlYyEeqfcxIHPk5Gqw
  X-Coursera-Trace-Id-Hex: a5ef7028d77ae8f8
  x-envoy-upstream-service-time: 1090
  X-Frame-Options: SAMEORIGIN
  x-powered-by: Express
  X-XSS-Protection: 1; mode=block
  X-Cache: Miss from cloudfront
  Via: 1.1 884d101a3faeefd4fb32a5d2a8a076b7.cloudfront.net (CloudFront)
  X-Amz-Cf-Pop: LHR62-C3
  X-Amz-Cf-Id: vqvX6ZUQgtZAde62t7qjafIAqHXQ8BLAv8UhkPHwyTMpvH617yeIbQ==
Length: 511551 (500K) [text/html]

Маніпулюйте User-Agent

Може виникнути ситуація, коли ви хочете підключити сайт за допомогою спеціального агента користувача. Або агент користувача певного браузера. Це можна зробити, вказавши –user-agent. Наведений нижче приклад для агента користувача як MyCustomUserAgent.

[email protected]:~# wget https://gf.dev --user-agent="MyCustomUserAgent"

Коли програма все ще розробляється, ви можете не мати відповідної URL-адреси для її тестування. Або ви можете протестувати окремий екземпляр HTTP за допомогою IP, але вам потрібно надати заголовок хосту для належної роботи програми. У цій ситуації –header буде корисним.

  Як вимкнути веб-камеру та мікрофон на Zoom

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

wget --header="Host: application.com" http://10.10.10.1

Не просто хост, але ви можете вставити будь-який заголовок.

Підключіться за допомогою проксі

Якщо ви працюєте в середовищі DMZ, ви можете не мати доступу до веб-сайтів. Але ви можете скористатися проксі для підключення.

wget -e use_proxy=yes 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.