map wget para que --no-check-certificate seja usado automaticamente

1

Eu quero mapear o wget para que --no-check-certificate seja usado automaticamente. Aqui está minha melhor tentativa até agora:

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

Isso não está funcionando muito bem. Para começar, eu preciso ser capaz de aceitar um número arbitrário de argumentos. Eu também não tenho certeza se esta é a maneira correta de "substituir" wget , parece muito auto-referencial. O que é uma boa maneira de fazer com que wget use automaticamente --no-check-certificate ?

    
por kilojoules 09.11.2017 / 21:46

3 respostas

0

Use apenas um alias .

Os aliases têm precedência sobre os recursos internos e aplicativos, para que você possa sobrescrever aplicativos.

Basta adicionar esta linha ao seu .bashrc , .bash_aliases ou similar:

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

O alias será expandido antes de ser executado. Qualquer coisa depois de wget será passada para o comando. Só então será executado como de costume. Isso é possível porque a expansão de alias é feita pelo shell, invocar o comando, pesquisar o caminho, etc. é feito pelo sistema (pode ser o kernel).

Se você quiser aplicar esse comportamento a qualquer wget instance, até mesmo ele é chamado por outro aplicativo, use .wgetrc e adicione esta linha:

check-certificate = off
    
por 09.11.2017 / 22:42
0

Você tem a idéia básica correta, mas há algumas mudanças a serem feitas: -

  1. Coloque as opções primeiro, incluindo --no-check-certificate , antes de qualquer URL.
  2. Para evitar qualquer recursão possível, substitua wget no corpo da função por $(which wget) quando você declarar a definição da função. Isso funciona, porque which é um programa externo, que, portanto, não possui conhecimento de alias ou definições de função em bash .
  3. Para passar a string do parâmetro da função completa, substitua seu $1 por "$@" . Isso se expande para a cadeia de parâmetros completa, com aspas duplas em torno dos parâmetros para parar a divisão de parâmetros em espaços incorporados. Isso funciona em shells baseados em Bourne ( sh , ksh , bash , etc).

Isso tudo leva à seguinte definição de função (usando bash syntax):

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

Usando isso, você pode chamar wget com quantas opções e parâmetros quiser, e --no-check-certificate será sempre incluído na string de execução. Você pode adicionar isso ao arquivo de inicialização do shell (por exemplo, ~/.bashrc ).

    
por 09.11.2017 / 22:42
0

Se você quiser usar o Wget, por que não usar seu arquivo de configuração? Não mexa nos arquivos de configuração bash, isso é klunky.

Wget tem um arquivo de configuração, normalmente para um usuário:

$HOME/.wgetrc

Um local para todos os usuários pode ser / usr / local / etc / wgetrc ou / etc / wgetrc, dependendo da sua instalação.

Para desativar a validação do certificado ssl para cada invocação do wget (que você sabe que é inseguro), você pode usar essa diretiva nesse arquivo:

check_certificate = off

manual do gnu para wget

    
por 12.11.2017 / 00:07

Tags