Jak zmusić wget do używania serwera proxy bez modyfikowania plików systemowych?


23

Chciałbym znać odpowiednik wget umożliwiający mi ustawienie proxy podczas wywoływania polecenia (jak wget --proxy=$http_proxy).

Jakieś pomysły ?

Odpowiedzi:


25

Bez modyfikowania plików systemowych /etc/wgetrcmożesz utworzyć plik w swoim katalogu domowym ~/.wgetrc. Umożliwi to lokalną modyfikację ustawień wget na poziomie użytkownika. Napisz teraz w at, ~/.wgetrcaby użyć wget za serwerem proxy:

use_proxy = on
http_proxy =  http://username:password@proxy.server.address:port/
https_proxy =  http://username:password@proxy.server.address:port/
ftp_proxy =  http://username:password@proxy.server.address:port/

Jeśli nie masz nazwy użytkownika proxy i hasła, po prostu napisz adres proxy i port wszędzie, np.

http_proxy =  http://proxy.server.address:port/

To powinno działać. Zakładam, że masz już ustawienia proxy dla wszystkich innych aplikacji.


38

Ta -eopcja umożliwia wprowadzanie poleceń w wierszu poleceń wgetrc, dzięki czemu nie trzeba zmieniać pliku ...

wget -e use_proxy=yes -e http_proxy=$proxy http://askubuntu.com

Znakomity. Zaoszczędziłeś wiele kłopotów, tak proste jak ta odpowiedź.
Wildcard

Jak to wyłączyć?
Tessaracter

3

Musisz edytować wgetrcplik znajdujący się pod adresem /etc/wgetrc.

Użyj swojego ulubionego edytora tekstu, tj .: nano /etc/wgetrcdo edycji

Poszukaj znacznika http_proxy i usuń # przed nim, dodaj serwer proxy po znaku = , tj .:

http_proxy=http://foo.proxy:8080

Następnie wyszukaj tag use_proxy i usuń # przed nim, zapisz plik.

wget będzie wtedy używać określonego serwera proxy.

Jeśli nie możesz zmienić konfiguracji systemu z użytkownikiem, możesz skopiować bieżącą konfigurację do miejsca, w którym możesz ją edytować, tj .: cp /etc/wgetrc ~i użyć --config=~/wgetrcopcji, aby zmusić wget do użycia konfiguracji, którą zmieniłeś zamiast konfiguracji globalnej.


Jestem świadomy tej możliwości, ale nie mogę modyfikować plików konfiguracyjnych.
fxm

Pomyśl, że jest to jedyna opcja dostępna w programie wget.
Bruno Pereira,

Dlatego szukam odpowiednika wget, jak wskazałem w tytule.
fxm

Zredagowałem tytuł, aby to odzwierciedlić, po pierwsze było jasne, co próbujesz zrobić.
Bruno Pereira,

Sprawdź ostatni akapit odpowiedzi.
Bruno Pereira,

1

Opcja, która nie jest wymieniona, ale powinna zostać wymieniona: Użyj zmiennych środowiskowych (w zależności od dystrybucji):

http_proxy=http://<proxy-server-ip>:<port>
export http_proxy

lub po prostu

export http_proxy=http://<proxy-server-ip>:<port>

To samo dla:

https_proxy=http://<proxy-server-ip>:<port>
ftp_proxy=http://<proxy-server-ip>:<port>

Możesz podać nazwę użytkownika i hasło, jeśli w haśle masz znaki specjalne, pamiętaj o dodaniu „-s”.

http_proxy='http://<username>:<password>@<proxy-server-ip>:<port>'

Przykłady:

export http_proxy=http://172.16.1.100:8080
export https_proxy='http://johndoe:ABC!123@172.16.1.100:8080'

1

Tylko z linii poleceń znalazłem sukces poprzedzający wgetpolecenie z http_proxyinformacją bez potrzeby używania zmiennych środowiskowych. Na przykład:

'$ http_proxy=<proxy-server-ip>:<port> wget http://www.example.com/'
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.