Saya mencoba perintah berikut:
$ wget -q --tries=10 --timeout=20 --spider http://google.com
(Dari posting SO ini . Saya ingin memeriksa koneksi internet saya di bash.)
Saya mendapatkan hasil sebagai berikut:
Spider mode enabled. Check if remote file exists.
--2015-09-28 09:55:50-- http://google.com/
Connecting to 127.0.0.1:3128... connected.
Proxy request sent, awaiting response... 302 Found
Location: http://www.google.de/?gfe_rd=cr&ei=k_IIVreaN-yH8Qfe1Yu4CA [following]
Spider mode enabled. Check if remote file exists.
--2015-09-28 09:55:50-- http://www.google.de/?gfe_rd=cr&ei=k_IIVreaN-yH8Qfe1Yu4CA
Connecting to 127.0.0.1:3128... connected.
Proxy request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Remote file exists and could contain further links,
but recursion is disabled -- not retrieving.
Sepertinya baik-baik saja, namun menjalankan cmd dengan sudo
, saya menerima ini:
Spider mode enabled. Check if remote file exists.
--2015-09-28 09:55:27-- http://google.com/
Resolving google.com (google.com)... failed: Name or service not known.
wget: unable to resolve host address ‘google.com’
Saya perlu baris ini dalam sebuah skrip, yang saya panggil sudo
dan karenanya selalu gagal.
Adakah yang bisa memberi tahu saya alasannya? Bagaimana saya bisa mengatasinya?
wget
terhadap google.com tampaknya bukan cara yang baik untuk memeriksa apakah koneksi internet berfungsi: misalnya, Anda mungkin berada pada koneksi yang memungkinkan koneksi HTTP ke Google tetapi melarang hal-hal yang benar-benar ingin dilakukan skrip Anda ; atau Google mungkin melarang akses ke situs mereka. Apa masalah sebenarnya yang Anda miliki, yang menurut Anda itusudo wget blah
adalah solusi potensial?Jawaban:
Anda memiliki proxy yang ditentukan di lingkungan Anda. Milikmu tampaknya
127.0.0.1:3128
.Ketika Anda menjalankan
sudo
, variabel lingkungan proxy tidak lulus, itulah sebabnya Anda tidak bisa langsung menyelesaikannyagoogle.com
.Anda dapat melihat proksi / proksi apa yang telah Anda tetapkan dalam variabel lingkungan Anda dengan perintah ini:
Informasi tambahan tentang Tanya Ubuntu
Catatan: Jika Anda ingin
sudo
meneruskan variabel lingkungan proxy HTTP, coba ini:Anda juga dapat melewatkan semua variabel lingkungan menggunakan
sudo -E
:Stack Overflow memiliki opsi lain untuk menjaga variabel lingkungan saat
sudo
ing.sumber
sudo -E
untuk melestarikan variabel lingkungansudo http_proxy=$http_proxy wget ...
lebih baik? Jika Anda menggunakannya dalam skrip apa pun, Anda tidak perlu mengubahnya jika proxy berubah.Defaults env_keep += "http_proxy ftp_proxy"
untuk/etc/sudoers
membuat sudo otomatis melestarikan variabel env.