10 Beispiele für wget-Befehle, die Ihnen bei der Fehlersuche helfen – wget Test

Eines der häufig verwendeten Dienstprogramme von sysadmin ist wget. Es kann bei der webbezogenen Fehlerbehebung sehr praktisch sein.

Was ist der wget-Befehl?

Der Befehl wget ist ein beliebtes Unix/Linux-Befehlszeilendienstprogramm zum Abrufen von Inhalten aus dem Internet. Es kann kostenlos verwendet werden und bietet eine nicht interaktive Möglichkeit, Dateien aus dem Internet herunterzuladen. Der wget-Befehl unterstützt standardmäßig HTTPS-, HTTP- und FTP-Protokolle. Darüber hinaus können Sie damit auch HTTP-Proxys verwenden.

Wie hilft Ihnen wget bei der Fehlerbehebung?

Es gibt viele Wege.

Als Systemadministrator arbeiten Sie die meiste Zeit an einem Terminal, und wenn Sie Probleme mit Webanwendungen beheben, möchten Sie möglicherweise nicht die gesamte Seite, sondern nur die Konnektivität überprüfen. Oder Sie möchten Intranet-Websites überprüfen. Oder Sie möchten eine bestimmte Seite herunterladen, um den Inhalt zu überprüfen.

wget ist nicht interaktiv, was bedeutet, dass Sie es im Hintergrund ausführen können, selbst wenn Sie abgemeldet sind. Es kann viele Fälle geben, in denen es wichtig ist, dass Sie die Verbindung zum System trennen, selbst wenn Sie Dateien aus dem Internet abrufen. Im Hintergrund läuft das wget und beendet den ihm zugewiesenen Job.

Es kann auch verwendet werden, um die gesamte Website auf Ihren lokalen Computern zu erhalten. Es kann Links in XHTML- und HTML-Seiten folgen, um eine lokale Version zu erstellen. Dazu muss es die Seite rekursiv herunterladen. Dies ist sehr nützlich, da Sie damit wichtige Seiten oder Websites für die Offline-Anzeige herunterladen können.

Sehen wir sie uns in Aktion an. Die Syntax des wget ist wie folgt.

wget [option] [URL]

Laden Sie eine Webseite herunter

Versuchen wir, eine Seite herunterzuladen. Beispiel: github.com

wget github.com

Wenn die Konnektivität in Ordnung ist, wird die Homepage heruntergeladen und die Ausgabe wie unten angezeigt.

[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]:~#

Laden Sie mehrere Dateien herunter

Praktisch, wenn Sie mehrere Dateien gleichzeitig herunterladen müssen. Dies kann Ihnen eine Vorstellung davon geben, wie das Herunterladen von Dateien durch einige Skripte automatisiert wird.

  So schreiben Sie Brüche in PowerPoint

Versuchen wir, Python 3.8.1- und 3.5.1-Dateien herunterzuladen.

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

Wie Sie sich also denken können, ist die Syntax wie folgt.

wget URL1 URL2 URL3

Sie müssen nur sicherstellen, dass zwischen den URLs Platz ist.

Downloadgeschwindigkeit begrenzen

Es wäre nützlich, wenn Sie überprüfen möchten, wie lange das Herunterladen Ihrer Datei bei unterschiedlichen Bandbreiten dauert.

Mit der Option –limit-rate können Sie die Download-Geschwindigkeit begrenzen.

Hier ist die Ausgabe des Herunterladens der Nodejs-Datei.

[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]

Es dauerte 0,05 Sekunden, um 13,92 MB große Dateien herunterzuladen. Versuchen wir nun, die Geschwindigkeit auf 500K zu begrenzen.

[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]

Das Reduzieren der Bandbreite dauerte länger zum Herunterladen – 28 Sekunden. Stellen Sie sich vor, Ihre Benutzer beschweren sich über langsame Downloads und Sie wissen, dass ihre Netzwerkbandbreite niedrig ist. Sie können schnell –limit-rate versuchen, um das Problem zu simulieren.

Im Hintergrund herunterladen

Das Herunterladen großer Dateien kann einige Zeit in Anspruch nehmen, oder das obige Beispiel, in dem Sie auch die Ratenbegrenzung festlegen möchten. Dies wird erwartet, aber was ist, wenn Sie nicht auf Ihr Terminal starren möchten?

  24 beste kostenlose Schreibsoftware für PC

Nun, Sie können das Argument -b verwenden, um das wget im Hintergrund zu starten.

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

Zertifikatsfehler ignorieren

Dies ist praktisch, wenn Sie Intranet-Webanwendungen überprüfen müssen, die nicht über das richtige Zertifikat verfügen. Standardmäßig gibt wget einen Fehler aus, wenn ein Zertifikat nicht gültig ist.

[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'.

Das obige Beispiel gilt für die URL, bei der das Zertifikat abgelaufen ist. Wie Sie sehen können, wurde die Verwendung von –no-check-certificate vorgeschlagen, wodurch jegliche Zertifikatsvalidierung ignoriert wird.

[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]:~#

Cool, oder?

Sehen Sie sich den HTTP-Antwortheader einer bestimmten Site auf dem Terminal an.

Mit -S wird der Header gedruckt, wie Sie unten für Coursera sehen können.

[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]

Manipulieren Sie den User-Agent

Es kann vorkommen, dass Sie eine Site mit einem benutzerdefinierten User-Agent verbinden möchten. Oder der User-Agent eines bestimmten Browsers. Dies ist durch Angabe von –user-agent möglich. Das folgende Beispiel gilt für den Benutzeragenten als MyCustomUserAgent.

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

Wenn sich eine Anwendung noch in der Entwicklung befindet, haben Sie möglicherweise keine geeignete URL, um sie zu testen. Oder Sie möchten eine einzelne HTTP-Instanz mit IP testen, müssen aber den Host-Header angeben, damit die Anwendung ordnungsgemäß funktioniert. In dieser Situation wäre –header nützlich.

  So erstellen Sie kostenlos Ihren eigenen Slack-Workspace

Nehmen wir ein Beispiel für das Testen von http://10.10.10.1 mit Host-Header als application.com

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

Nicht nur hosten, sondern Sie können jeden beliebigen Header einfügen.

Verbindung über Proxy herstellen

Wenn Sie in einer DMZ-Umgebung arbeiten, haben Sie möglicherweise keinen Zugriff auf Internet-Sites. Aber Sie können den Proxy nutzen, um eine Verbindung herzustellen.

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

Vergessen Sie nicht, die Variable $PROXYHOST:PORT mit den tatsächlichen zu aktualisieren.

Stellen Sie eine Verbindung mit einem bestimmten TLS-Protokoll her

Normalerweise würde ich empfehlen, OpenSSL zum Testen des TLS-Protokolls zu verwenden. Sie können aber auch wget verwenden.

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

Das Obige zwingt wget, sich über TLS 1.2 zu verbinden.

Fazit

Die Kenntnis des erforderlichen Befehls kann Ihnen bei der Arbeit helfen. Ich hoffe, das Obige gibt Ihnen eine Vorstellung davon, was Sie mit wget machen können.