Mengendalikan profil Tunnelblick bernama dari terminal
Tunnelblick menyediakan connect, state, dan disconnect melalui AppleScript. Panggil antarmuka itu, biarkan aplikasi tetap memegang kendali, dan beri setiap penantian tenggat.
Skrip yang memerlukan VPN aktif sebelum pencadangan sering menjalankan openvpn langsung. Itu meninggalkan profil, DNS, dan penanganan rute yang sudah dikelola Tunnelblick. Jalur yang didukung adalah antarmuka AppleScript milik Tunnelblick sendiri, yang menerima permintaan connect, state, dan disconnect untuk konfigurasi bernama. Gunakan itu, dan biarkan aplikasi tetap memegang kendali.
Berbicara kepada aplikasi, bukan kepada openvpn
Tunnelblick memiliki profil OpenVPN, pemilihan mesin, skrip, serta integrasi DNS dan rute. Biner openvpn terpisah adalah susunan peluncuran yang berbeda, bukan jalan pintas ke koneksi yang sama.
Memanggil antarmuka skrip aplikasi menjaga kepemilikan itu utuh dan membuat setiap permintaan dapat ditinjau.
Contoh di sini mengasumsikan Tunnelblick berada di Applications, konfigurasi yang berfungsi bernama HQ, dan perintah dijalankan di sesi pengguna Mac yang sudah masuk. Ubah namanya menjadi konfigurasi persis yang Anda miliki.
Mulai tepat satu profil bernama
Permintaan connect menyebutkan konfigurasinya. Itu bukan permintaan untuk menghubungkan apa pun yang terakhir dipilih.
Jalankan di sesi pengguna yang memiliki konfigurasi tersebut:
osascript -e 'tell application "/Applications/Tunnelblick.app" to connect "HQ"'Lewati perintah masuk yang biasa. macOS mungkin bertanya apakah aplikasi pemanggil diizinkan mengendalikan Tunnelblick; periksa aplikasi dan target mana sebelum menyetujui. Otomasi yang mengklik lewat dialog itu menghilangkan tujuan dialog.
Permintaan connect kembali sebelum terowongan siap
Panduan skrip Tunnelblick tegas: connect kembali sebelum koneksi selesai. Status keluar nol berarti permintaan diterima, bukan bahwa lalu lintas mengalir.
Baca statusnya secara terpisah:
osascript -e 'tell application "/Applications/Tunnelblick.app" to get state of first configuration where name = "HQ"'CONNECTED adalah hasil status koneksi. Itu masih belum membuktikan bahwa sumber daya privat yang dibutuhkan tugas Anda dapat dijangkau, jadi periksa secara terpisah sebelum memulai pekerjaan yang bergantung padanya.
Kontrol lain di antarmuka skrip mencakup tindakan yang lebih luas dan tidak diperlukan bila hanya satu profil berubah.
Tunggu dengan tenggat, lalu gagal
Polling tanpa henti adalah cara skrip menggantung sepanjang malam dan memblokir eksekusi berikutnya. Beri penantian tenggat, interval pendek, dan hasil kegagalan yang eksplisit. Perlakukan setiap status selain CONNECTED sebagai belum siap, termasuk status peralihan. Catat status terakhir yang Anda lihat agar kegagalan menjelaskan dirinya sendiri.
Perulangan terbatas tampak seperti ini:
for i in $(seq 1 30); do
state=$(osascript -e 'tell application "/Applications/Tunnelblick.app" to get state of first configuration where name = "HQ"')
if [ "$state" = "CONNECTED" ]; then exit 0; fi
sleep 1
done
echo "tunnel did not reach CONNECTED" >&2
exit 1Tiga puluh detik adalah contoh, bukan batas waktu universal. Pilih tenggat dari jalur autentikasi yang benar-benar dipakai profil, dan simpan di catatan alur kerja.
Periksa status dan putuskan koneksi berdasarkan nama
Untuk menghentikan profil yang sama, panggil disconnect dengan nama yang sama. Itu menjaga permintaan tetap sempit dan membiarkan konfigurasi lain.
osascript -e 'tell application "/Applications/Tunnelblick.app" to disconnect "HQ"'Simpan nama profil dan pengendalinya bersama di catatan alur kerja, bersama pemeriksaan autentikasi dan penyelesaian yang diharapkan. Catatan itulah yang membuat perintah dapat ditinjau enam bulan kemudian.
Perilaku mulai bersama komputer adalah mode lain. Gunakan opsi mulai Tunnelblick yang terdokumentasi dan penyetelan kredensial yang diharapkannya. Perintah yang dijalankan di sesi desktop yang sudah masuk dan layanan yang mulai bersama mesin tidak berbagi konteks. Jangan menganggap skrip yang berfungsi saat Anda masuk akan berjalan saat boot. Uji jalur mulai itu sendiri, dengan tenggat dan pencatatan yang sama.