Перейти к содержимому

карта wget, так что --no-check-Certificate автоматически используется

1

Я хочу отобразить wget, чтобы --no-check-certificateон использовался автоматически. Вот моя лучшая попытка:

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

Это не работает отлично. Для начала мне нужно принять произвольное количество аргументов. Я также не уверен, что это правильный способ «перезаписи» wget, он кажется слишком ссылочным. Каков хороший способ сделать так, чтобы wgetавтоматически использовались --no-check-certificate?

2 323 просмотра
kilojoules спросил 8 лет назад
K 350

3 ответа

0
Принятый ответ

Просто используйте alias.

Псевдонимы имеют преимущество перед встроенными модулями и приложениями, поэтому вы можете перезаписывать приложения.

Просто добавьте эту строку в ваш .bashrc, .bash_aliasesили аналогичные:

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

Псевдоним будет расширен до его выполнения. Все, что после, wgetбудет передано команде. Только тогда это будет выполнено как обычно. Это возможно, потому что расширение псевдонима выполняется оболочкой, вызов команды, поиск пути и т. Д. Выполняется системой (может быть ядром).

Если вам нравится применять это поведение к любому wget экземпляру, даже если он вызывается другим приложением, используйте .wgetrcи добавьте следующую строку:

check-certificate = off 
GiantTree ответил 8 лет назад
G 695
0

У вас есть правильная основная идея, но есть некоторые изменения, которые необходимо сделать:

  1. Сначала укажите параметры, в том числе --no-check-certificateперед любыми URL-адресами.
  2. Чтобы избежать любой возможной рекурсии, замените wgetв теле функции, $(which wget)когда вы объявляете определение функции. Это работает, потому что whichэто внешняя программа, которая поэтому не знает псевдонимов или определений функций в bash.
  3. Чтобы передать полную строку параметров функции, замените ее $1на "$@". Это расширяется до полной строки параметров с двойными кавычками вокруг параметров, чтобы остановить разбиение параметров во встроенных пространствах. Это работает на Bourne основе оболочек ( sh, ksh, bashи т.д.).

Все это приводит к следующему определению функции (с использованием bashсинтаксиса):

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

Используя это, вы можете вызывать wgetстолько параметров и параметров, сколько захотите, и --no-check-certificateвсегда будете включены в строку выполнения. Вы можете добавить это в файл запуска оболочки (например ~/.bashrc).

AFH ответил 8 лет назад
A 13 576
0

Если вы хотите использовать Wget, то почему бы не использовать его файл конфигурации? Не связывайтесь с файлами конфигурации bash, это клунки.

Wget имеет конфигурационный файл для одного пользователя:

$ HOME / .wgetrc

Местоположение для всех пользователей может быть / usr / local / etc / wgetrc или / etc / wgetrc, в зависимости от вашей установки.

Чтобы отключить проверку сертификата ssl для каждого вызова wget (который, как вы знаете, небезопасен), вы можете использовать эту директиву в этом файле:

check_certificate = off

Руководство по GNU для Wget

bbaassssiiee ответил 8 лет назад
B 917