Saya memiliki beberapa lokasi jaringan yang diatur pada laptop saya: Pekerjaan, Rumah, dll. Pekerjaan satu (s) semua memiliki server proxy yang diatur, sedangkan yang lain tidak. Ini berfungsi baik untuk aplikasi OSX - Safari, Mail, bahkan Firefox dan Thunderbird dengan plugin System Proxy .
Untuk aplikasi terminal seperti git
, svn
, gem
, dan curl
saya memiliki berikut di saya .bash_profile
:
export HTTP_PROXY='http://proxy.mycompany.com:80'
export http_proxy=$HTTP_PROXY
Pertanyaan saya adalah ini: apakah ada cara untuk membuat variabel yang diekspor mencari nilai dari lokasi sistem saya saat ini? Saya lebih suka itu dilakukan secara dinamis (jadi jika saya mengubah lokasi selama sesi terminal itu akan berubah), tapi saya akan senang dengan hanya satu yang mengaturnya ketika .bash_profile
dijalankan (artinya saya harus memulai sesi terminal baru ketika saya mengubah lokasi).
Terima kasih!
Jawaban:
Apa versi Mac OS X? Saya tidak yakin alat ini disertakan dengan Mac OS X 10.4 atau sebelumnya.
networksetup
harus menjadi apa yang Anda cari, yaitusudo networksetup -getwebproxy NAME_OF_NETWORK_DEVICE
(mis. sudo networksetup -getwebproxy Airport)Outputnya keluar seperti ini:
Jadi, Anda perlu mengubah output menjadi sesuatu yang dapat digunakan.
Contoh yang benar-benar kasar menggunakan awk beberapa kali (keterampilan awk saya agak mendasar) adalah:
Menghasilkan keluaran
http://SERVER_ADDRESS:123
sumber
networksetup -listallnetworkservices
sudo networksetup -getwebproxy Ethernet
, saya mendapatkan hasil cetakan dan kemudian segfault. Saya membayangkan segfault menyebabkan pipa rusak, jadiawk
tidak pernah mendapatkan apa pun untuk diurai.awk
. Menambahkan awk membuat pesan segfault menghilang. . . bersama dengan semua output lainnya.Dalam jawaban di atas , ada komentar dari tlrobinson tentang bagaimana itu tidak termasuk nomor port.
Anda dapat melakukannya dengan mematikan HTTP Proxy Server dengan HTTP Proxy Port
Saya juga melihat ini dilakukan seperti ini:
sumber
Selain itu perintah ini dapat membantu menemukan pengaturan proxy lainnya:
scutil --proxy
sumber
Sepertinya ini berhasil, tapi saya tidak yakin seberapa kuatnya:
Ini tidak berfungsi jika Lokasi Anda menggunakan
proxy.pac
alih - alih lokasi proxy yang dikodekan keras.sumber
Anda bisa menggunakan alat kecil yang saya tulis, yang menetapkan variabel lingkungan yang biasa digunakan untuk proksi. Penggunaannya mudah:
Menambahkan:
untuk Anda
.profile
,.bashrc
atau.bash_profile
.Setelah itu Anda dapat menggunakan variabel seperti
$HTTP_PROXY
,$http_proxy
,$HttpProxy
, dll untuk semua protokol (HTTP, FTP, SOCKS) termasuk$NO_PROXY
pengecualian. Ini akan berfungsi untuk sebagian besar alat CLI dan mendapatkan pengaturan dari panel kontrol OS X.sumber