ordne wget so zu, dass --no-check-certificate automatisch verwendet wird

1

Ich möchte wget so abbilden, dass --no-check-certificatees automatisch verwendet wird. Hier ist mein bisher bester Versuch:

function wget() { wget @1 --no-check-certificate }

Das funktioniert nicht so gut. Für den Anfang muss ich in der Lage sein, eine beliebige Anzahl von Argumenten zu akzeptieren. Ich bin mir auch nicht sicher, ob dies der richtige Weg zum "Überschreiben" ist wget, es scheint zu selbstreferenziell. Was ist ein guter Weg, um es so zu machen, dass wgetautomatisch verwendet --no-check-certificate?

Kilojoule
quelle

Antworten:

0

Verwenden Sie einfach eine alias.

Aliase haben Vorrang vor integrierten Anwendungen, sodass Sie Anwendungen überschreiben können.

Fügen Sie einfach folgende Zeile zu .bashrc, .bash_aliasesoder ähnlich:

alias wget='wget --no-check-certificate'

Der Alias ​​wird erweitert, bevor er ausgeführt wird. Alles Weitere wgetwird an den Befehl übergeben. Erst dann wird es wie gewohnt ausgeführt. Dies ist möglich, weil die Alias-Erweiterung von der Shell ausgeführt wird, der Befehl aufgerufen wird, der Pfad usw. vom System durchsucht wird (möglicherweise vom Kernel).

Wenn Sie dieses Verhalten auf eine wget Instanz anwenden möchten, die auch von einer anderen Anwendung aufgerufen wird, verwenden Sie .wgetrcund fügen Sie diese Zeile hinzu:

check-certificate = off
GiantTree
quelle
0

Sie haben die richtige Grundidee, aber es müssen einige Änderungen vorgenommen werden:

  1. Stellen Sie die Optionen, einschließlich --no-check-certificate, vor die URLs.
  2. Um eine mögliche Rekursion zu vermeiden, ersetzen Sie wgetden Funktionskörper durch, $(which wget)wenn Sie die Funktionsdefinition deklarieren. Dies funktioniert, da whiches sich um ein externes Programm handelt, das daher keine Kenntnis von Alias- oder Funktionsdefinitionen in hat bash.
  3. Ersetzen Sie Ihre $1durch , um die vollständige Funktionsparameterzeichenfolge zu übergeben "$@". Dies wird in die vollständige Parameterzeichenfolge mit doppelten Anführungszeichen um Parameter erweitert, um die Aufteilung der Parameter in eingebettete Leerzeichen zu beenden. Dies funktioniert auf Bourne-basierte Schalen ( sh, ksh, bash, usw.).

Dies alles führt zu der folgenden Funktionsdefinition (unter Verwendung von bashSyntax):

wget() { $(which wget) --no-check-certificate "$@"; }

Auf diese Weise können Sie wgetso viele Optionen und Parameter aufrufen, wie Sie möchten, und sie --no-check-certificatewerden immer in die Ausführungszeichenfolge aufgenommen. Sie können dies der Startdatei der Shell hinzufügen (z ~/.bashrc. B. ).

AFH
quelle
0

Wenn Sie Wget verwenden möchten, warum nicht die Konfigurationsdatei verwenden? Verwirren Sie sich stattdessen nicht mit Bash-Konfigurationsdateien, das ist klunkig.

Wget hat eine Konfigurationsdatei, normalerweise für einen Benutzer:

$ HOME / .wgetrc

Ein Speicherort für alle Benutzer kann je nach Installation / usr / local / etc / wgetrc oder / etc / wgetrc sein.

Um die SSL-Zertifikatüberprüfung für jeden Aufruf von wget (von dem Sie wissen, dass er unsicher ist) zu deaktivieren , können Sie diese Anweisung in dieser Datei verwenden:

check_certificate = off

Gnu-Handbuch für wget

bbaassssiiee
quelle