ホーム テクノロジー LINUX トラブルシューティングに役立つ 10 の wget コマンド例 – wget テスト

トラブルシューティングに役立つ 10 の wget コマンド例 – wget テスト


システム管理者が頻繁に使用するユーティリティの 1 つが wget です。これは、Web 関連のトラブルシューティングの際に非常に便利です。

wgetコマンドとは何ですか?

wget コマンドは、Web からコンテンツを取得するための一般的な Unix/Linux コマンド ライン ユーティリティです。これは無料で使用でき、Web からファイルをダウンロードする非対話型の方法を提供します。 wget コマンドは、すぐに使用できる HTTPS、HTTP、および FTP プロトコルをサポートします。さらに、HTTP プロキシを使用することもできます。

wget はトラブルシューティングにどのように役立ちますか?

いろいろな方法があります。

システム管理者は、ほとんどの場合ターミナルで作業することになるため、Web アプリケーション関連の問題のトラブルシューティングを行うときは、ページ全体ではなく接続だけをチェックしたい場合があります。または、イントラネット Web サイトを確認したいとします。または、特定のページをダウンロードして内容を確認したい場合。

wget は非対話型です。つまり、ログオフしているときでもバックグラウンドで実行できます。 Web からファイルを取得する場合でも、システムから切断する必要がある場合が多くあります。バックグラウンドでwgetが実行され、割り当てられたジョブが完了します。

これを使用して、Web サイト全体をローカル マシンに取得することもできます。 XHTML および HTMLページ内のリンクをたどってローカル バージョンを作成できます。そのためには、ページを再帰的にダウンロードする必要があります。これは、重要なページやサイトをダウンロードしてオフラインで表示できるため、非常に便利です。

実際の動作を見てみましょう。 wgetの構文は以下の通りです。

 wget [option] [URL]

Webページをダウンロードする

ページをダウンロードしてみましょう。例: github.com

 wget github.com

接続に問題がない場合は、ホームページがダウンロードされ、以下のような出力が表示されます。

 root@trends:~# 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]

root@trends:~# 

複数のファイルをダウンロードする

複数のファイルを一度にダウンロードする必要がある場合に便利です。これにより、いくつかのスクリプトを使用してファイルのダウンロードを自動化する方法についてのアイデアが得られます。

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 ファイルのダウンロードの出力は次のとおりです。

 root@trends:~# 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 MB のファイルをダウンロードするのに 0.05 秒かかりました。ここで、速度を 500K に制限してみましょう。

 root@trends:~# 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すぐに試して、問題をシミュレートできます。

バックグラウンドでダウンロード

大きなファイルのダウンロードには時間がかかる場合があります。また、上記の例では、レート制限も設定する必要があります。これは想定内のことですが、端末を見つめたくない場合はどうすればよいでしょうか?

-b引数を使用すると、バックグラウンドで wget を開始できます。

 root@trends:~# wget -b https://slack.com
Continuing in background, pid 25430.
Output will be written to ‘wget-log.1’.
root@trends:~#

証明書エラーを無視する

これは、適切な証明書を持たないイントラネット Web アプリケーションをチェックする必要がある場合に便利です。デフォルトでは、証明書が無効な場合、wget はエラーをスローします。

 root@trends:~# 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の使用が提案されています。

 root@trends:~# 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]

root@trends:~#

かっこいいですね。

HTTPレスポンスヘッダー

端末上の特定のサイトの HTTP 応答ヘッダーを確認します。

以下の Coursera に示すように、 -Sを使用するとヘッダーが出力されます。

 root@trends:~# 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を指定することで実行できます。以下の例は、ユーザー エージェントが MyCustomUserAgent の場合です。

 root@trends:~# wget https://gf.dev --user-agent="MyCustomUserAgent"

ホストヘッダー

アプリケーションがまだ開発中の場合、それをテストするための適切な URL がない場合があります。または、IP を使用して個々の HTTP インスタンスをテストしたい場合もありますが、アプリケーションが適切に動作するにはホスト ヘッダーを指定する必要があります。この状況では、 --headerが便利です。

ホストヘッダーを application.com として http://10.10.10.1 をテストする例を見てみましょう。

 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 プロトコルを使用して接続する

通常、TLS プロトコルをテストするには OpenSSL を使用することをお勧めします。ただし、wget も使用できます。

wget --secure-protocol=TLSv1_2 https://example.com

上記により、wget は TLS 1.2 経由で接続するように強制されます。

結論

必要なコマンドを知っておくと仕事に役立ちます。上記の説明で、 wgetで何ができるか理解していただければ幸いです。

「トラブルシューティングに役立つ 10 の wget コマンド例 – wget テスト」についてわかりやすく解説!絶対に観るべきベスト2動画

Windows トラブルシューティングツールのご紹介
[Windows 10] コマンドプロンプトを管理者権限で起動する